无法在另一个活动中显示listView中的项目

时间:2017-06-14 21:24:03

标签: java android listview

我希望点击的项目显示在另一个活动中。第二个活动会出现,但字符串不会显示。我尝试了其他方法,但第二项活动仍然是空白。 这是主要活动

EditText TxtOne;
Button btOne;
ListView lisOne;
ArrayList aL;
ArrayAdapter<String> adapt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TxtOne = (EditText) findViewById(R.id.TxtOne);
    btOne = (Button) findViewById(R.id.btOne);
    lisOne = (ListView) findViewById(R.id.lisOne);

    aL = new ArrayList<String>();
    adapt = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,aL);
    lisOne.setAdapter(adapt);
    onBClick();
    lisOne.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
            Intent itemInfo = new Intent(MainActivity.this, secondActivity.class);
            itemInfo.putExtra("Itemis",position);
            startActivity(itemInfo);

        }
    });
}

public void onBClick(){
    btOne.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            String InpItem = TxtOne.getText().toString();
            aL.add(InpItem);
            adapt.notifyDataSetChanged();
        }

    });
}

以下是第二个活动

public class secondActivity extends AppCompatActivity {
    TextView txt2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Bundle passedData = getIntent().getExtras();
        txt2 = (TextView)findViewById(R.id.txt2);
        txt2.setText(passedData.getString("Itemis"));
    }
}

我已经阅读了其他类似的帖子,但都没有。 有人谈到textView不在活动布局中,因为结果为NULL。 textView处于活动布局中,但仍然不显示该项目。 解决任何人?

2 个答案:

答案 0 :(得分:0)

您正在错误地传递和阅读其他内容。执行以下操作:

itemInfo.putExtra("Itemis", position);txt2.setText(String.valueof(getIntent().getIntExtra("Itemis")));

答案 1 :(得分:0)

在下面的Listener中,您要将position添加到itemInfo Intent。此处的位置类型为 int ,因此您应该getIntExtra()来检索整数数据,而不是getStringExtra()

lisOne.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
      Intent itemInfo = new Intent(MainActivity.this, secondActivity.class);
      itemInfo.putExtra("Itemis",position); //position is INT value!!
      startActivity(itemInfo);
    }
});

所以你应该这样做 -

  

getIntExtra (字符串名称,int defaultValue ); //这会返回position的int值。

替换这两行 -

txt2 = (TextView)findViewById(R.id.txt2);
txt2.setText(Integer.toString(getIntent().getExtras().getIntExtra("Itemis",0))); //getting int value in second activity and converting into string for displaying

注意 - 您应该使用getStringExtra("Itemis")从Intents中检索字符串数据。不是getString("Itemis")

有关设置和从意图中检索值的更多详细信息,请参阅Intent Docs Page