显示ListView步骤
1. 准备ListView要显示的数据
2. 使用数组保存数据
3. 创建适配器Adpater, 适配器就是每一行显示的数组Items
4. 把适配器添加到ListView,并显示出来
5. 添加 List 点击/长按/判断长按的 Items
///为数组Items创建布局,实现图片两行Items布局,
Items的布局,每一列的List都使用这个布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom="4dip" android:paddingLeft="12dip"> <ImageView android:layout_width="wrap_content" android:id="@+id/itemImage" android:layout_height="fill_parent"> </ImageView> <TextView android:text="TextView01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/itemTitle" android:layout_toRightOf="@+id/itemImage" android:textSize="20dip"> </TextView> <TextView android:text="TextView02" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/itemText" android:layout_toRightOf="@+id/itemImage" android:layout_below="@+id/itemTitle"> </TextView> </RelativeLayout>
//代码依次:
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.view.View.OnCreateContextMenuListener; import android.widget.ListView; import com.ishow.androiddemo.adapter.ListViewAdapter; public class MainActivity extends Activity { private ListView listview; private String[] titles = { "春", "夏", "秋", "冬" }; private String[] texts = { "春天桃花开", "夏天梨花开", "秋天菊花开", "冬天梅花开" }; private int[] resIds = { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setTitle("BaseAdapter for Listview!"); listview = (ListView) findViewById(R.id.users); listview.setAdapter(new ListViewAdapter(this, titles, texts, resIds)); listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("长按菜单-ContextMenu"); menu.add(0, 0, 0, "弹出长按菜单0"); menu.add(0, 1, 0, "弹出长按菜单1"); } }); } @Override public boolean onContextItemSelected(MenuItem item) { setTitle("点击了长按菜单里面的第" + item.getItemId() + "个项目"); return super.onContextItemSelected(item); } }
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import com.ishow.androiddemo.R; import com.ishow.androiddemo.viewholder.ListViewViewHolder; public class ListViewAdapter extends BaseAdapter { private Context context; private String[] itemTitles; private String[] itemTexts; private int[] itemImageRes; public ListViewAdapter(Context context,String[] itemTitles, String[] itemTexts, int[] itemImageRes) { this.context = context; this.itemTitles = itemTitles; this.itemTexts = itemTexts; this.itemImageRes = itemImageRes; } @Override public View getView(int position, View convertView, ViewGroup parent) { View itemView = null; ListViewViewHolder viewHolder = null; if (convertView != null) { itemView = convertView; } else { itemView = inflateView(itemTitles[position], itemTexts[position], itemImageRes[position]); } viewHolder = (ListViewViewHolder) itemView.getTag(); viewHolder.fillFromItem(itemTitles[position], itemTexts[position], itemImageRes[position]); return itemView; } private View inflateView(String strTitle, String strText, int resId) { View itemView = null; itemView = LayoutInflater.from(context).inflate( R.layout.list_activity_main_item, null); itemView.setTag(new ListViewViewHolder(itemView)); return itemView; } // 必须 @Override public int getCount() { return itemTitles.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } }
import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.ishow.androiddemo.R; public class ListViewViewHolder { View view; String itemTitle; String itemText; int itemImage; TextView title; TextView text; ImageView image; public ListViewViewHolder(View view) { this.view = view; initUI(); } public void initUI() { title = (TextView) view.findViewById(R.id.itemTitle); text = (TextView) view.findViewById(R.id.itemText); image = (ImageView) view.findViewById(R.id.itemImage); } public void fillFromItem(String itemTitle, String itemText, int itemImage) { title.setText(itemTitle); text.setText(itemText); image.setBackgroundResource(itemImage); } }