【发布时间】:2014-03-09 09:36:11
【问题描述】:
我正在使用具有check box 和button 的自定义列表视图,并使用光标适配器填充列表视图。
现在我想在单击按钮Delete 时删除列表视图的项目。因此,我首先使用了按钮单击侦听器,然后在列表视图中捕获项目单击我为列表视图编写了 itemclicklistener,然后尝试捕获,但这里没有任何工作,因为当在列表视图中单击项目时,控件不会转到 ItemClicklistener .
代码:
public class manager extends Activity{
String getentry;
private int storeID=0;
//Database d;
StockTable st;
private String getstocks;
public Cursor a1;
Intent bd;
Intent sd;
//ListView popstocks;
/*public stockmanager() {
// TODO Auto-generated constructor stub
}*/
static class ViewHolder {
CheckBox cb;
Button view1;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stockmanager);
// d=new Database(getApplicationContext());
st=new StockTable(getApplicationContext());
final Button AddStock=(Button) findViewById(R.id.button1);
final Button DeleteStock=(Button) findViewById(R.id.button3);
final EditText entry=(EditText) findViewById(R.id.editText1);
final Button BroDetail=(Button) findViewById(R.id.button2);
//final ListView popstocks=(ListView) findViewById(R.id.listView1);
final ListView popstocks =(ListView) findViewById(R.id.listView1);
final TextView displaystocks=(TextView) findViewById(R.id.textView2);
********button that is used for deleting the item in listview**************************
DeleteStock.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
popstocks.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
//Toast.makeText(getApplicationContext(), popstocks.getCheckedItemCount(), Toast.LENGTH_LONG).show();
System.out.println(popstocks.getCheckedItemCount());
}
});
System.out.println(popstocks.isItemChecked(popstocks.getCheckedItemPosition()));
}
});
}
public class poplist extends CursorAdapter{
public poplist(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
//StockTable st1=new StockTable(getApplicationContext());
//Database d1=new Database(getApplicationContext());
@Override
public void bindView(View view, Context context, Cursor c) {
// TODO Auto-generated method stub
final ViewHolder myviewholder=new ViewHolder();
myviewholder.cb=(CheckBox) view.findViewById(R.id.checkBox1);
myviewholder.view1=(Button) view.findViewById(R.id.button1);
//if(c.moveToFirst()){
//cb.setText(a1.getString(a1.getColumnIndex(st1.column2)));
//do{
//cb.setText(a1.getString(a1.getColumnIndexOrThrow(st.column2)));
myviewholder.cb.setText(c.getString(c.getColumnIndexOrThrow(st.column3)));
// }while (a1.moveToNext());
// }
myviewholder.view1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sd=new Intent(v.getContext(),StockDetail.class);
sd.putExtra("StockName", myviewholder.cb.getText());
startActivity(sd);
}
});
}
@Override
public View newView(Context context, Cursor c, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.stocklist, parent, false);
bindView(v, context, c);
return v;
// return null;
}
}
}
我该如何解决这个问题?如果我走错了方向,我很高兴得到任何指导。我是 Android 初学者。
编辑
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stockmanager);
// d=new Database(getApplicationContext());
st=new StockTable(getApplicationContext());
final Button AddStock=(Button) findViewById(R.id.button1);
final Button DeleteStock=(Button) findViewById(R.id.button3);
final EditText entry=(EditText) findViewById(R.id.editText1);
final Button BroDetail=(Button) findViewById(R.id.button2);
//final ListView popstocks=(ListView) findViewById(R.id.listView1);
final ListView popstocks =(ListView) findViewById(R.id.listView1);
final TextView displaystocks=(TextView) findViewById(R.id.textView2);
displaystocks.setText("You have not added any stocks start by entering stock name and clicking ADD Stock button");
getstocks="Select " + st.column1 + " as _id, " + st.column3 + " From "+ st.tablename;
a1=Database.getInstance(getApplicationContext()).getWritableDatabase().rawQuery(getstocks, null);
if(a1.moveToNext())
{
displaystocks.setVisibility(View.INVISIBLE);
}
poplist populatestocks=new poplist(getApplicationContext(),a1) ;
popstocks.setAdapter(populatestocks);
popstocks.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
System.out.println("Item Clicked");
System.out.println(popstocks.getCheckedItemPosition());
}
});
这里控制在进行,但是在我选择了所有列表视图项之后,itemposition 也返回为-1
【问题讨论】:
-
从数组列表视图中获取所有元素到文本视图中,然后设置按钮单击事件侧的值 textview.settext("") ;解决我认为......这样做可能会帮助你
-
谢谢阿米特,但如果我将 listview 的所有值都添加到 textview 中,那么如果我删除 listview 的任何项目,这将如何影响已经填充的 listview?
-
你列出所有项目(它们在你需要调用的另一个布局的文本视图中)列表......然后你可以清除这些项目值集(“ "); ......
标签: android listview android-cursoradapter