2017-06-17 62 views
-1

我有setOnItemClickListener代码:如何从自定义列表视图适配器中获取数据并传递给intent放置额外?

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(); 
    } 
}); 

日志给我:

[email protected] 

每一行点击让我在最后一个异数。例如

[email protected] 

它是我的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

将适配器的代码,请 –

+0

ArrayAdapter @Blackbelt – Nere

回答

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(); 
    } 
}); 
+0

我喜欢你的答案.. – Nere

1

每行点击的代码给了我不同的数字结尾。例如

这就是Object.toString的执行。您的适配器拥有类型为TableName的数据集,而不是String。该行

String user_name = String.valueOf(parent.getItemAtPosition(position)); 

是错误的。它应该是

TableName tableName = (TableName) parent.getItemAtPosition(position); 

铸造到正确的类型后,您可以访问TableName的字段。

编辑

看到您的适配器后,它看起来像你正在使用UserList数据对象,所以正确的投应该是UserList而不是TableName,这是不是你可以做什么logcat的是显示寿

+0

感谢您的回答,MUTHU给我说,我能理解.. – Nere

+0

如何将所有数据传递给putExtra答案吗?例如 'i.putExtra(“userData”,parent.getItemAtPosition(position));'它是正确的吗? – Nere

+0

只有当对象可以分组时才可以。 [Here](https://developer.android.com/reference/android/os/Parcelable.html)示例 – Blackbelt

相关问题