我有以下代码,当我点击每一行时,它没有注册onclick事件并且没有显示日志。
我可能做了一些愚蠢的事情,所以任何帮助都会受到赞赏。
public void loadTable(){
File dbfile = new File(Global.currentDBfull);
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
mItemName.clear();
mItemID.clear();
adapter.notifyDataSetChanged();
String SQLStatement = "select * from assets where areaobjectid = '" + StationObjectID + "' and CriticalAsset = 'Y'";
Log.e("SQLSTATEMENT", SQLStatement);
String intCount = "0";
Cursor c = db.rawQuery(SQLStatement, null);
if(c.getCount() != 0) {
c.moveToFirst();
while(!c.isAfterLast()) {
mItemName.add(c.getString(c.getColumnIndex("Description")));
mArrayClick.add(c.getString(c.getColumnIndex("StationObjectID")));
mItemStatus.add(c.getString(c.getColumnIndex("ConditionID")));
Log.e("MITEMSTATUS",c.getString(c.getColumnIndex("ConditionID")));
c.moveToNext();
}
rowCount = mItemName.size();
listView = (ListView) findViewById(R.id.lvAssets);
adapter.notifyDataSetChanged();
int[] colors = {0, 0xFFFF0000, 0};
listView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
listView.setDividerHeight(1);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Log.e("TOMTEST", "Clicked");
}
});
} else {
Log.e("Assessment", "No Results");
}
db.close();
}
class CustomAdapter extends BaseAdapter
{
@Override
public int getCount() {
return mItemName.size();
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
ImageButton btnAction;
LayoutInflater inf=getLayoutInflater();
View v=inf.inflate(R.layout.iconrow, arg2,false);
ImageView ivStatus=(ImageView)v.findViewById(R.id.icon);
TextView tv=(TextView)v.findViewById(R.id.text);
btnAction = (ImageButton)v.findViewById(R.id.btnAction);
final String itemID = "Item ID";
final String itemText = "Item Text";
final String itemStage = "Item Strage";
tv.setText(mItemName.get(arg0).toString());
String currentStatus = mItemStatus.get(arg0).toString();
if(Functions.isNullOrEmpty(mItemStatus.get(arg0).toString())){
ivStatus.setImageResource(R.drawable.ico_not_verified);
} else if(mItemStatus.get(arg0).toString() == "99") {
ivStatus.setImageResource(R.drawable.ico_not_found);
} else {
ivStatus.setImageResource(R.drawable.ico_found);
}
return v;
}
}
答案 0 :(得分:0)
如果您extends
ListActivity
override
OnListItemClick
getView
方法, if(arg1==null){
LayoutInflater inflater=getLayoutInflater();
arg1=inflater.inflate(R.layout.row, parent, false);
}
这就是你需要的。另外,如果我可以给你一个建议,ListView
中的模式应如下所示:
View
为了避免浪费内存,因为{{1}}作为回收{{1}}的方式,以降低内存使用率
答案 1 :(得分:0)
您的代码适合我。
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Log.v("TOMTEST", "Clicked");
Toast.makeText(getApplicationContext(), "Clicked : "+position, Toast.LENGTH_LONG).show();
}
});
它也会向Toast显示正确的位置。
不知何故,它无法在日志中打印消息。
希望它对你有所帮助。
感谢。