显示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);
}
}
本文介绍如何在Android应用中实现ListView的显示与交互功能,包括数据准备、适配器创建及ListView点击与长按事件处理。
929

被折叠的 条评论
为什么被折叠?



