Androidにはアイコン付きListViewと長押しメニューがあります
8558 ワード
MainActivity.java
CustomListViewAdapter.java
main.xml
item_row.xml
ファイル構造:
package com.zxl;
import java.util.ArrayList;
import java.util.List;
import org.w3c.dom.ls.LSException;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener {
/** Called when the activity is first created. */
ListView lv;
List<ListViewItem> items;
CustomListViewAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv=(ListView)findViewById(R.id.listView1);
items=new ArrayList<MainActivity.ListViewItem>();
items.add(new ListViewItem(){{
ThumbnailResource=R.drawable.ic_launcher;
title="Item1";
SubTitle="Item1 Description";
}});
items.add(new ListViewItem(){{
ThumbnailResource=R.drawable.ic_launcher;
title="Item2";
SubTitle="Item2 Description";
}});
items.add(new ListViewItem(){{
ThumbnailResource=R.drawable.ic_launcher;
title="Item3";
SubTitle="Item3 Description";
}});
items.add(new ListViewItem(){{
ThumbnailResource=R.drawable.ic_launcher;
title="Item4";
SubTitle="Item4 Description";
}});
adapter=new CustomListViewAdapter(this, items);
lv.setAdapter(adapter);
registerForContextMenu(lv);
lv.setOnItemClickListener(this);
}
class ListViewItem{
public int ThumbnailResource;
public String title;
public String SubTitle;
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
/* ListViewItem item=items.get(position); //
items.remove(item);
adapter=new CustomListViewAdapter(this, items);
lv.setAdapter(adapter);*/
ListViewItem item=items.get(position);
Toast.makeText(MainActivity.this, "this is :"+item, Toast.LENGTH_LONG).show();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.add("add");
menu.add("update");
menu.add("delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
super.onContextItemSelected(item);
if(item.getTitle()=="add"){
Toast.makeText(MainActivity.this, "add", Toast.LENGTH_LONG).show();
items.add(new ListViewItem(){{
ThumbnailResource=R.drawable.ic_launcher;
title="Item new";
SubTitle="Item new Description";
}});
adapter=new CustomListViewAdapter(this, items);
lv.setAdapter(adapter);
}
else if(item.getTitle()=="update"){
//do somthing
}
else if(item.getTitle()=="delete"){
ContextMenuInfo info = item.getMenuInfo();
AdapterView.AdapterContextMenuInfo contextMenuInfo = (AdapterContextMenuInfo) info;
//
int position = contextMenuInfo.position;
ListViewItem itema=items.get(position);
items.remove(itema);
adapter=new CustomListViewAdapter(this, items);
lv.setAdapter(adapter);
}
return true;
}
}
CustomListViewAdapter.java
package com.zxl;
import java.util.List;
import com.zxl.MainActivity.ListViewItem;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class CustomListViewAdapter extends BaseAdapter
{
LayoutInflater inflater;
List<ListViewItem> items;
public CustomListViewAdapter(Activity context, List<ListViewItem> items) {
super();
this.items = items;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return items.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//items
ListViewItem item=items.get(position);
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.item_row, null);
ImageView imgThumbnail=(ImageView) vi.findViewById(R.id.imgThumbnail);
TextView txtTitle =(TextView) vi.findViewById(R.id.txtTitle);
TextView txtSubTitle=(TextView) vi.findViewById(R.id.txtSubTitle);
imgThumbnail.setImageResource(item.ThumbnailResource);
txtTitle.setText(item.title);
txtSubTitle.setText(item.SubTitle);
return vi;
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
item_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="5dip">
<ImageView
android:layout_width="78dip"
android:layout_height="78dip"
android:id="@+id/imgThumbnail"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:layout_marginLeft="-3dip"
android:scaleType="centerInside">
</ImageView>
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/txtTitle"
android:layout_toRightOf="@+id/imgThumbnail"
android:layout_marginTop="6dip"
android:layout_marginLeft="6dip">
</TextView>
<TextView
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/txtSubTitle"
android:layout_toRightOf="@+id/imgThumbnail"
android:layout_below="@+id/txtTitle"
android:layout_marginTop="3dip"
android:layout_marginLeft="6dip">
</TextView>
</RelativeLayout>
ファイル構造: