我有使用一個字符串數組如下填充的列表視圖:如何更改項目點擊列表視圖的內容?
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getListView().getContext(),android.R.layout.simple_list_item_1,res);
getListView().setAdapter(adapter);
我想改變列表視圖的使用OnItemClickListener內容。
我有使用一個字符串數組如下填充的列表視圖:如何更改項目點擊列表視圖的內容?
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getListView().getContext(),android.R.layout.simple_list_item_1,res);
getListView().setAdapter(adapter);
我想改變列表視圖的使用OnItemClickListener內容。
根據您希望進行更改的方式,您是希望用戶通過輸入進行更改,還是希望通過代碼直接進行更改。以下setOnItemClickListener將新值設置爲變量。 爲了從用戶處獲得輸入,您需要將其填充到片段或新活動中,從用戶處獲取輸入並提交這些更改,刷新列表並顯示更新的數據。
模型類:
public class Item {
private String name = "";
public Item() {
}
public Item(String name){
this.name = name;
}
public String getItemName() {
return name;
}
public void setItemName(String name) {
this.name = name;
}
}
適配器類:
public class ItemAdapter extends ArrayAdapter<Item> {
private List<Item> itemList = new ArrayList<Item>();
Context context;
@Override
public void add(Item object) {
itemList.add(object);
super.add(object);
}
public ItemAdapter(List<Item> rList, Context context) {
super(context, android.R.layout.simple_list_item_1);
this.context = context;
this.itemList = rList;
}
private class ViewHolder {
TextView txtItemName;
}
public int getCount() {
return this.itemList.size();
}
public Item getItem(int index) {
return this.itemList.get(index);
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, parent, false);
holder.txtItemName = (TextView) convertView.findViewById(R.id.txtItemName);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
Item item = getItem(position);
holder.txtItemName.setText(item.getItemName());
return convertView;
}
}
活動類:
public class ItemActivity extends Activity {
private ListView listView;
private ItemAdapter itemListAdapter;
private List<Item> itemList = new ArrayList<Item>();
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
listView = (ListView) findViewById(R.id.listView);
itemListAdapter = new ItemAdapter(itemList, this);
listView.setAdapter(itemListAdapter);
listView.setFastScrollEnabled(true);
////////////////////////////////////////////////
// add some items
itemList.add(new Item("Charlie"));
itemList.add(new Item("Jenny"));
//add new items and changes to adapter
itemListAdapter.notifyDataSetChanged();
////////////////////////////////////////////////
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
String beforeName = itemListAdapter.getItem(position).getItemName().toString();
String changedName = "Thomas";
itemListAdapter.getItem(position).setItemName(changedName);
}
});
}
}
非常感謝你,真的很有幫助 – ssm
如果您想用不同的數組填充listview
,請在適配器視圖中設置get方法,然後在適配器中使用set方法設置數組,然後調用adapter.notifyDataSetChanged()
方法。您可以在onItemClickListenr()
中找到適配器的參考,您可以使用它來調用和設置陣列。
謝謝你的回覆 – ssm
你會得到一個列表,當你通話然後編寫getListView onItemClickListerner()爲此,您可以獲取列表項的位置,之後您可以根據位置更改代碼。 – Hanuman
假設在onClick我想填充列表使用不同的數組說arr1.What我寫在OnItemClickListener? – ssm
你的問題沒有顯示你爲解決你的問題而付出的努力。請自行研究教程和代碼示例,並返回更詳細和具體的問題。 – Egor