【发布时间】:2015-06-30 15:00:46
【问题描述】:
我有一个字符串列表,我在创建时在列表视图中设置:
//set Adapter
lvAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, chosenArray);
//add to listview
lw.setAdapter(lvAdapter);
我的问题:
我想设置列表,以便一旦单击某个项目,它就会被删除。但是,我是 android 新手,以前没有这样做过。
我尝试过的失败:
根据回答我尝试了这种方法,但是它也会划掉列表中不可见的项目。
lw.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//cross off
TextView text = (TextView) view;
text.setPaintFlags(text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
});
我听说可能有一种方法可以扩展 arrayadapter,但我以前从未这样做过。有什么想法吗?
更新:由于我们遇到了一些问题,这里是整个代码。这一切都在 onCreate 中:
public ArrayAdapter<String> lvAdapter;
public ArrayList<String> arrPlayers = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pool_sheet);
//Setup List view
ListView lw = (ListView) findViewById(R.id.lvBouts);
//adapter to use on ListView
String[] chosenArray = {""};
//convert
if (extras != null) {
arrPlayers = extras.getStringArrayList("arrPlayers");
}
//Based on array input size from main activity
//select pre defined string arrays
switch (arrPlayers.size()) {
case 6:
chosenArray = poolOfSix;
break;
case 7:
chosenArray = poolOfSeven;
break;
case 8:
chosenArray = poolOfEight;
break;
case 9:
chosenArray = poolOfNine;
break;
case 10:
chosenArray = poolOfTen;
break;
//no need for default since multiple choice
}
//set Adapter
lvAdapter = new ArrayAdapter<String>this,Android.R.layout.simple_list_item_1, chosenArray);
lw.setAdapter(lvAdapter);
//List view onClick listener
lw.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//cross off
TextView text = (TextView) view;
text.setPaintFlags(text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
});
}
这是它的行为:
【问题讨论】: