2

私は周りを見回しました、そしてそれは私が探しているものがわからないためかもしれません、しかし私は私が推測する何かをする方法を見つけることができませんアンドロイドで非常に簡単であるべきです。

画面に表示するデータの配列があります。このデータは、データベースキー、名前、およびイメージを保持するクラスです。

現在、このデータをImageViewおよびTextViewとして表示しています。配列をループして、画像とテキストを含むTableLayoutに新しい行を追加します。

画像とテキストの両方をクリックして、新しいアクティビティに変更したいのですが。

この新しいアクティビティでは、正しいデータを表示するために、クリックされた行のデータベースキーを知る必要があります。

これが私がこれまでに持っているものです:

private void fillSuggestionTable(TableLayout tabSuggestions, Suggestion[] arrToAdd)
{
    for(int i = 0; i < arrToAdd.length; i++)
    {
        /* Create a new row to be added. */
        TableRow trSuggestion = new TableRow(this);
        trSuggestion.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

        /* Create objects for the row-content. */
        ImageView imgDisplayPicture = new ImageView(this);
        ImageHandler.loadBitmap(arrToAdd[i].strImageURL, imgDisplayPicture);
        imgDisplayPicture.setLayoutParams(new LayoutParams(50,50));

        TextView txtArtistName = new TextView(this);
        txtArtistName.setText(arrToAdd[i].strName);
        txtArtistName.setTextColor(Color.parseColor("#000000"));

        /* Add data to row. */
        trSuggestion.addView(imgDisplayPicture);
        trSuggestion.addView(txtArtistName);

        /* Add row to TableLayout. */
        tabSuggestions.addView(trSuggestion, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    }
}
4

3 に答える 3

1

追加のデータを別のアクティビティに渡すには、Intent.putExtra(name、value)メソッドを使用して追加の情報を追加する必要があります。

たとえば、インテントを送信するには:

Intent i = new Intent([pass info about next Activity here]);
i.putExtra("databaseKey", databaseKey);
startActivity(i);

データを再度取得するには:

public void onCreate(Bundle savedInstance)
{
    // Do all initial setup here

    Bundle extras = getIntent().getExtras();
    if (extras != null && extras.containsKey("databaseKey"))
    {
        int databaseKey = extras.getInt("databaseKey");
        // Load database info
    }
    else
    {
        // No data was passed, do something else
    }
}

編集:テーブルの行がいつクリックされたかを確認するには、View.OnClickListenerを実装し、使用するTableRowsのonClickListenerを設定する必要があります。

例えば:

/* Create a new row to be added. */
TableRow trSuggestion = new TableRow(this);
trSuggestion.setOnClickListener([listener]);

発生する唯一の問題は、ビューのIDを関連するデータベースの行IDに関連付けることです。HashMapが役立つはずです。

于 2012-04-05T17:32:35.373 に答える
1

TableViewを使用している理由はありますか?ListViewとカスタムCursorAdapterを使用すると、データベースからListView行への変換をアダプターが処理できるため、達成したいことがはるかに簡単になるようです。その時点で、データベースIDを知っている新しいアクティビティを開始するのは簡単です。

mListView.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
    Intent i = new Intent(MyActivity.this, MyOtherActivity.class);
    i.putExtra("database_id", id);
    startActivity(i);
  }
});

そしてMyOtherActivityで:

private int dbId;
protected void onCreate(Bundle savedInstanceState) {
  //do stuff
  dbId = getIntent().getIntExtra("database_id", -1); // the -1 is the default if the extra can't be found
}
于 2012-04-05T17:34:14.697 に答える
0

これは非常に簡単な手順です。このブログはそれを簡単な言葉で説明しています。

于 2012-04-05T17:33:28.153 に答える