单击列表视图项并将数据库项ID传递给下一个活动?

问题描述 投票:1回答:3

我有一个活动,其中包含从SQLiteDatabase加载的列表视图。我想要发生的是,当我单击其中一个项目时,我希望第二个活动加载并显示项目ID。这是我到目前为止:

setOnItemClickListener:

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(getBaseContext(),Detail.class);
            intent.putExtra("DB_ID_EXTRA",IWantThisToBeMyID);
            startActivity(intent);
        }
    }

填充IWantThisToBeMyID:

public static String IWantThisToBeMyID = "com.example.projectloc.assignment.pictures._id";

Detail.class

public class Detail extends AppCompatActivity{
String passedVar = null;
private TextView passedView = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail);

    passedVar=getIntent().getStringExtra(Master.dbIDEx);

    passedView=(TextView)findViewById(R.id.passedText);
    passedView.setText(passedVar);
}

当我单击其中一个列表视图项时,它会加载新活动但不显示任何内容。

android listviewitem
3个回答
2
投票

检查当您在intent中添加数据时,您正在添加DB_ID_EXTRA key名称,并且在您的Detail活动中,您正在使用Master.dbIDEx不同的key

在通过intent传递数据时,您需要使用相同的密钥名称

用这个

passedVar = getIntent().getStringExtra("DB_ID_EXTRA");

代替

passedVar = getIntent().getStringExtra(Master.dbIDEx);

2
投票

试试这个

passedVar=getIntent().getStringExtra("DB_ID_EXTRA");

代替

passedVar=getIntent().getStringExtra(Master.dbIDEx);

1
投票

您传递的密钥是DB_ID_EXTRA,并使用错误的密钥从intent获取值。只是改变这个

public class Detail extends AppCompatActivity{
String passedVar = null;
private TextView passedView = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail);    
    passedVar=getIntent().getStringExtra("DB_ID_EXTRA");
    passedView=(TextView)findViewById(R.id.passedText);
    passedView.setText(passedVar);
 }
© www.soinside.com 2019 - 2024. All rights reserved.