AndroidStudio将数据库表的数据在lisiview中显示 怎样设置listview每行为可编辑
时间: 2024-02-15 20:04:46 浏览: 76
要实现ListView每行可编辑,可以通过自定义Adapter来完成。在getView()方法中,将每行的数据绑定到ViewHolder并设置监听器,当用户点击某行时,可以将该行的数据传递给编辑页面,进行修改操作,然后更新ListView。
下面是一个简单的示例代码:
首先,定义ViewHolder,用于保存每行的控件引用:
```
private static class ViewHolder {
EditText editText;
Button saveButton;
}
```
然后,实现自定义Adapter,继承自BaseAdapter,重写getView()方法:
```
public class MyListAdapter extends BaseAdapter {
private Context mContext;
private List<String> mDataList;
public MyListAdapter(Context context, List<String> dataList) {
mContext = context;
mDataList = dataList;
}
@Override
public int getCount() {
return mDataList.size();
}
@Override
public String getItem(int position) {
return mDataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.editText = convertView.findViewById(R.id.edit_text);
viewHolder.saveButton = convertView.findViewById(R.id.save_button);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
final String data = getItem(position);
viewHolder.editText.setText(data);
viewHolder.editText.setEnabled(false);
viewHolder.saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newData = viewHolder.editText.getText().toString();
mDataList.set(position, newData);
notifyDataSetChanged();
}
});
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.editText.setEnabled(true);
viewHolder.editText.requestFocus();
}
});
return convertView;
}
}
```
最后,在Activity中设置ListView的Adapter为自定义Adapter即可:
```
List<String> dataList = new ArrayList<>();
// 从数据库中获取数据并添加到dataList中
ListView listView = findViewById(R.id.list_view);
MyListAdapter adapter = new MyListAdapter(this, dataList);
listView.setAdapter(adapter);
```
这样就实现了ListView每行可编辑的效果。
阅读全文