我有setOnItemClickListener
个代码:
userListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String user_name = String.valueOf(parent.getItemAtPosition(position));
Log.i("data_items",user_name);
Toast.makeText(MainActivity.this,user_name,Toast.LENGTH_SHORT).show();
}
});
日志给了我:
pacakge.name.TableName@3131
点击的每一行都会在最后给出一个不同的数字。例如
pacakge.name.TableName@4131
它是我的SQLite的数据库吗?如何读入我的自定义列表适配器的onClickItemListene?
任何人都可以帮助我吗?
ArrayAdapater
private class UserListAdapter extends ArrayAdapter<UserList> {
private ArrayList<UserList> items;
public UserListAdapter(@NonNull Context context, @LayoutRes int textViewResourceId, @NonNull ArrayList<UserList> objects) {
super(context, textViewResourceId, objects);
this.items = objects;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View v = convertView;
if(v == null)
{
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = layoutInflater.inflate(R.layout.user_list_item,null);
}
UserList userList = items.get(position);
if(userList != null)
{
TextView usernameTextView = (TextView) v.findViewById(R.id.usernameTextView);
TextView fullnameTextViewFeatured = (TextView) v.findViewById(R.id.fullnameTextViewFeatured);
if(usernameTextView != null)
{
usernameTextView.setText(userList.getUser_name());
}
if(fullnameTextViewFeatured != null)
{
fullnameTextViewFeatured.setText(userList.getFull_name());
}
}
return v;
}
}
答案 0 :(得分:1)
点击的每一行都会在最后给出不同的数字。例如
这是Object.toString
的实施。您的适配器包含类型为TableName
的数据集,而不是String。这条线
String user_name = String.valueOf(parent.getItemAtPosition(position));
错了。它应该是
TableName tableName = (TableName) parent.getItemAtPosition(position);
转换为正确的类型后,您可以访问TableName
的字段。
修改强>
看到你的适配器之后,看起来你正在使用UserList
作为数据对象,所以正确的强制转换应该是UserList
而不是TableName
,这不是Logcat所展示的寿
答案 1 :(得分:1)
嗨,你可以这样做,
userListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
UserList userList = (UserList)parent.getItem(position);
String user_name = userList.getUser_name();
Log.i("data_items",user_name);
Toast.makeText(MainActivity.this,user_name,Toast.LENGTH_SHORT).show();
}
});