0

私はリストビューを持っています。Web から取得した JSON が含まれています。ListView の各項目が同じアクティビティと同じTextView に移動するようにします。それは一見簡単です。

ただし、ユーザーがクリックした内容に応じて、TextView にさまざまな項目を表示する必要があります。実際には、そのうちの 1 つにリンクがあるため、2 つの TextView にすることをお勧めします。テキストは 2 行あり、1 行はリンクです。

したがって、ユーザーが最初のリスト項目を押すと、このアクティビティに移動し、information_01 が表示されます。同じユーザーがバックアウトしてから 2 番目のリスト項目に移動すると、まったく同じアクティビティに移動し、information_02 を表示する必要があります。

私がこれまでに持っているものをお見せします、それは特別なことではありません:

title.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

                  switch (position) {
                  case 0:
                      Driver p = (Driver) title.getItemAtPosition(position);
                      Intent i = new Intent(MainActivity.this, DataActivity.class);
                      i.putExtra("one_id", p.id);
                      i.putExtra("one_link", p.link);
                      MainActivity.this.startActivity(i);
                  case 1:
                      Driver p1 = (Driver) title.getItemAtPosition(position);
                      Intent i1 = new Intent(MainActivity.this, DataActivity.class);
                      i1.putExtra("two_id", p1.id);
                      i1.putExtra("two_link", p1.link);
                      MainActivity.this.startActivity(i1);
                  case 2:
                      break;
                  }

リスト アイテムごとに 100 万のアクティビティを作成するのは骨の折れる作業なので、これが可能になることを願っています。私が言ったように、そのうちの1つは、アプリの別のページに送信する必要があるリンクです。したがって、それを表示してクリックする必要があることに注意してください。

この問題に関するいくつかの助けをいただければ幸いです。前もって感謝します。

編集: 私の DataActivity.class

public class DataActivity extends Activity {

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

    //Case 0
    Intent intent0 = getIntent();
    String link0 = intent0.getStringExtra("one_link");
    String id0 = intent0.getStringExtra("one_id");

    TextView data0 = (TextView) findViewById(R.id.case0Text);
    data0.setText("ID: " + id0 + "\n\n Click here: " + link0);

    //Case 1
    Intent intent1 = getIntent();
    String id1 = intent1.getStringExtra("two_id");
    String link1 = intent1.getStringExtra("two_link");

    TextView data1 = (TextView) findViewById(R.id.case1Text);
    data1.setText("ID: " + id1 + "\n\n Click here: " + link1);
}
}
4

3 に答える 3

0

このようにしてみてください

 @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long arg3) {

            Driver driver = (Driver) parent.getAdapter().getItem(position);
                Intent intent = new Intent(MainActivity.this, DataActivity.class);
                intent.putExtra("one_id", driver.id);
                intent.putExtra("one_link", driver.link);
                MainActivity.this.startActivity(intent);

        }

これがうまくいくことを願っています。

于 2013-10-15T14:55:21.413 に答える
0

これを試して

title.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {


                  Driver p = (Driver) title.getItemAtPosition(position);
                  Intent i = new Intent(MainActivity.this, DataActivity.class);
                  i.putExtra("id", p.id);
                  i.putExtra("link", p.link);

              }

DataActivity.class

  public class DataActivity extends Activity {

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

    //Case 0
    Intent intent0 = getIntent();
    String link0 = intent0.getStringExtra("link");
    String id0 = intent0.getStringExtra("id");

    TextView data0 = (TextView) findViewById(R.id.case0Text);
    data0.setText("ID: " + id0 + "\n\n Click here: " + link0);


}
}

DataActivity の xml で 2 つの textView を取得できます。1 つは id 用id、もう 1 つはリンク用であり、リンクの textview をクリック可能にし、それに clickListener を設定します。

于 2013-10-15T14:59:02.587 に答える
0

json データをどこに保存していますか? それをハッシュマップに保存し、itemclick メソッドの位置に基づいて取得します。これほど多くのことを行う必要はありません。

于 2013-10-15T14:47:42.577 に答える