Android 如何从自定义列表视图适配器获取数据并传递给intent put extra?

Android 如何从自定义列表视图适配器获取数据并传递给intent put extra?,android,Android,我有setonicmclicklistener代码: userListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String user_name = String.value

我有
setonicmclicklistener
代码:

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@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;
        }
    }
私有类UserListAdapter扩展了ArrayAdapter{
私有ArrayList项;
公共UserListAdapter(@NonNull上下文、@LayoutRes int textViewResourceId、@NonNull ArrayList对象){
超级(上下文、textViewResourceId、对象);
此项=对象;
}
@非空
@凌驾
公共视图getView(int位置,@Nullable视图convertView,@NonNull视图组父级){
视图v=转换视图;
如果(v==null)
{
LayoutInflater LayoutInflater=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=布局更平坦。充气(R.布局。用户列表项,空);
}
UserList UserList=items.get(位置);
if(userList!=null)
{
TextView用户名TextView=(TextView)v.findViewById(R.id.usernameTextView);
TextView fullnameTextViewFeatured=(TextView)v.findViewById(R.id.fullnameTextViewFeatured);
if(usernameTextView!=null)
{
usernameTextView.setText(userList.getUser_name());
}
如果(fullnameTextViewFeatured!=null)
{
fullnameTextViewFeatured.setText(userList.getFull_name());
}
}
返回v;
}
}
每单击一行,最后都会显示不同的数字。比如说

pacakge.name.TableName@4131
这是
Object.toString
的实现。适配器保存的数据集类型为
TableName
,而不是String。线路

String user_name = String.valueOf(parent.getItemAtPosition(position));
这是错误的。应该是

 TableName tableName = (TableName) parent.getItemAtPosition(position);
转换到正确的类型后,您可以访问
TableName
的字段

编辑


看到适配器后,看起来您正在使用
UserList
作为数据对象,因此右转换应该是
UserList
,而不是
TableName
,这不是Logcat显示的,因为您可以这样做

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();
    }
});
userListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
UserList UserList=(UserList)parent.getItem(position);
字符串user_name=userList.getUser_name();
Log.i(“数据项”,用户名);
Toast.makeText(MainActivity.this,用户名,Toast.LENGTH.SHORT.show();
}
});

输入适配器的代码PleaseArayadapter@blackbelt谢谢你的回答,Muthu给我一个我能理解的答案..如何将所有数据传递给putExtra?例如
i.putExtra(“userData”,parent.getItemAtPosition(position))是否正确?仅当对象可包裹时。举个例子,我的情况如何?对不起,我对安卓系统还不太熟悉。谷歌就可以了。它已经回答了很多次了