我是Android编程的新手。我打算使用ListView制作购物清单,以便用户可以删除已购买清单上的商品。应该是这样
已创建列表。
他可以击穿购买的物品。
他可以使用EditText和布局底部的“添加”按钮添加项目。
在添加第3点之类的项目之后,呈现列表,并通过笔画保留所有项目。
开始时,我单击添加到程序中的许多初始项以使笔划通过,然后开始添加项,列表中出现意外行为。当我什至没有单击它们以使它们通过笔画时,我从一开始就单击“添加”之后,一些新添加的项目就会获得笔画通过。其中一些不。我不了解这种行为。是因为ListView的某些属性吗?
ArrayList<String> shoppingList = new ArrayList<>();;
ArrayList<String> strikeThroughList = null;
ArrayList<String> strikeThroughText = null;
ArrayAdapter<String> adapter = null;
ListView lv = null;
Button addBtn=null;
EditText addEdtTxt=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addBtn=findViewById(R.id.addBtn);
addBtn.setOnClickListener(this::btnClick);
//shoppingList = new ArrayList<>();
strikeThroughList = new ArrayList<>();
strikeThroughText= new ArrayList<>();
//One way to populate List
Collections.addAll(shoppingList, "Eggs", "Yogurt", "Milk", "Bananas", "Apples", "Tide with bleach", "Cascade");
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, shoppingList);
lv = (ListView) findViewById(R.id.listView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mnu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id=item.getItemId();
if(id==R.id.clrList)
{
shoppingList.clear();
lv.setAdapter(adapter);
}
return super.onOptionsItemSelected(item);
}
public void btnClick(View view) {
if(view.getId()==R.id.addBtn){ addEdtTxt=findViewById(R.id.addEdtTxt);
adapter.add(addEdtTxt.getText().toString());
adapter.notifyDataSetChanged();
}
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
TextView text = (TextView) view;
text.setPaintFlags(text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
答案 0 :(得分:0)
在将Views添加到strikeThroughView列表中时,尝试更改以下代码。
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//String selectedFromList = (String)(lv.getItemAtPosition(position));
TextView text = (TextView) view;
text.setPaintFlags(text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
text.setId(2);
strikeThroughView.add(text);
}