ListView 和Button的结合



 

public class Main extends Activity {
	ListView list;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		list = (ListView) findViewById(R.id.lv);
		
		MyAdapter adapter = new MyAdapter(this);
		list.setAdapter(adapter);
		list.setItemsCanFocus(false);
		list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
		list.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				ViewHolder holder = (ViewHolder) view.getTag();
				String string = holder.file_name.getText().toString();
				holder.download_btn.setOnClickListener(new OnClickListener() {
					public void onClick(View v) {
						Toast.makeText(Main.this, "123", 2000).show();
					}
				});
				Toast.makeText(Main.this, string, 2000).show();
			}
		});
	}
}

 

public class MyAdapter extends BaseAdapter {
	private LayoutInflater mInflater;
	private List<Map<String, Object>> mData;

	public MyAdapter(Context context) {
		mInflater = LayoutInflater.from(context);
		init();
	} // 初始化

	private void init() {
		mData = new ArrayList<Map<String, Object>>();

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("file_name", "附件一");
		map.put("file_time", "2011/07/09");
		mData.add(map);

		map = new HashMap<String, Object>();
		map.put("file_name", "附件二");
		map.put("file_time", "2011/07/09");
		mData.add(map);

	}

	@Override
	public int getCount() {
		return mData.size();
	}

	@Override
	public Object getItem(int position) {
		return null;
	}

	@Override
	public long getItemId(int position) {
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder = null;
		// convertView为null的时候初始化convertView。
		if (convertView == null) {
			holder = new ViewHolder();
			convertView = mInflater.inflate(R.layout.list, null);
			holder.file_name = (TextView) convertView
					.findViewById(R.id.file_name);
			holder.file_time = (TextView) convertView
					.findViewById(R.id.file_time);
			holder.download_btn = (Button) convertView
					.findViewById(R.id.download_btn);
			holder.download_btn.setFocusable(false);

			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		holder.file_name.setText(mData.get(position).get("file_name").toString());
		holder.file_time.setText(mData.get(position).get("file_time").toString());
		final String string = mData.get(position).get("file_name").toString();
		holder.download_btn.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				System.out.println(string);
			}
		});
		return convertView;
	}

	public final class ViewHolder {
		public TextView file_name;
		public TextView file_time;
		public Button download_btn;
	}
}

 
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Delphi中,可以使用TListView组件来显示数据,并通过TAdapterBindSource和TAdapterListViewAdapter来实现数据的绑定和显示。下面是一个简单的示例代码: ```delphi unit MainForm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.Bind.GenData, Data.Bind.EngExt, Vcl.Bind.DBEngExt, System.Rtti, System.Bindings.Outputs, Vcl.Bind.Editors, Data.Bind.Components, Data.Bind.Grid, Vcl.Grids, Data.Bind.ObjectScope, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Bind.Navigator; type TForm1 = class(TForm) ListView1: TListView; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private FPersonList: TObjectList<TPerson>; procedure LoadData; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses System.Generics.Collections; type TPerson = class FirstName: string; LastName: string; Age: Integer; end; procedure TForm1.FormCreate(Sender: TObject); begin FPersonList := TObjectList<TPerson>.Create; end; procedure TForm1.Button1Click(Sender: TObject); begin LoadData; ListView1.Items.Clear; ListView1.ItemAppearanceObjects.ItemObjects.Text.Text := 'FirstName'; ListView1.ItemAppearanceObjects.ItemObjects.Detail.Text := 'LastName'; ListView1.ItemAppearanceObjects.ItemObjects.Accessory.Text := 'Age'; ListView1.Adapter := TListBindSourceAdapter<TPerson>.Create(Self, FPersonList); end; procedure TForm1.LoadData; var Person: TPerson; begin Person := TPerson.Create; Person.FirstName := 'John'; Person.LastName := 'Doe'; Person.Age := 25; FPersonList.Add(Person); Person := TPerson.Create; Person.FirstName := 'Jane'; Person.LastName := 'Smith'; Person.Age := 30; FPersonList.Add(Person); end; end. ``` 在上述代码中,首先在FormCreate事件中创建了一个TObjectList<TPerson>对象,用于存储要显示的数据。在Button1Click事件中,通过LoadData方法加载数据,并将数据绑定到ListView上。 在ListView的ItemAppearanceObjects属性中,设置了各个子项的显示内容,例如Text.Text对应FirstName,Detail.Text对应LastName,Accessory.Text对应Age。 最后,使用TListBindSourceAdapter<TPerson>类来创建适配器,并将其赋值给ListView的Adapter属性,即可实现数据的绑定和显示。 请注意,在使用TAdapterBindSource和TAdapterListViewAdapter时,需要在uses中添加Data.Bind.GenData单元,并在项目中引用LiveBindings及相关包文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值