1

(SQLiteデータベースから返された)データのArrayListを取得し、以下のコードを介してテーブルに変換する必要があるコードがあります。私が疑問に思っていたのは、テーブルに動的に追加するボタンにclickListenerを追加する方法です。基本的に、行の列の1つからの値を、他の場所でアクセスするSharedPreference変数に追加します。

さらに情報が必要な場合はお知らせくださいが、それは理にかなっていると思います。

DatabaseHandler db = new DatabaseHandler(TabFragment3.this.getActivity());
List<FoodPoints> foodpoints = db.getAllFoodPoints();

    for (FoodPoints fp : foodpoints) {
        String listFood = fp.getFood();
        String listPoints = Integer.toString(fp.getPoints());
        String listDate = fp.getDate();

        listDate = listDate.substring(0, 12);

        insertRow(tablePoints, listFood, listPoints, listDate);
        // String log = "ID: " + fp.getID() + ", Food: " + fp.getFood() + ", Points: " + fp.getPoints() + ", Date: " + fp.getDate();
        // Log.d("FoodPoints", log);
    }

private void insertRow(TableLayout tablePoints, String tblFoodName, String tblFoodPoints, String tblFoodDate) {
    final TableRow newrow = new TableRow(currentActivity);

     addPlusButtonPointsTable(newrow);
    addTexttoRowswithValues(newrow, tblFoodName, 3);
    addTexttoRowswithValues(newrow, tblFoodPoints, 17);
    addTexttoRowswithValues(newrow, tblFoodDate, 17);
    tablePoints.addView(newrow);
}

...

private void addPlusButtonPointsTable(TableRow newrow) {
    Button plusButton = new Button(currentActivity);
    //plusButton.setBackgroundColor(R.drawable.);
    plusButton.setText("+");
    plusButton.setMinimumWidth(1);
    plusButton.setMinimumHeight(1);
    plusButton.setTextSize(14);

    newrow.addView(plusButton);
}
4

2 に答える 2

1

addPlusButtonPointsTable()メソッドに次の行を追加します。

plusButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // do what you want
    }
});
于 2012-10-19T13:17:17.513 に答える
1

次のように、クリックしaddPlusButtonPointsTable()たときに設定に保存する列の値(たとえば、食べ物の名前)を取得する ようにメソッドを変更できます(これはあなたが望んでいないことだと思いますか?)。Button

private void addPlusButtonPointsTable(TableRow newrow, String foodName) {
    // ...
    // set the data as the tag for the Button
    plusButton.setTag(foodName);
    plusButton.setOnClickListener(mListener);
    // ...
}

このメソッドは次のように呼び出されます。

addPlusButtonPointsTable(newrow, tblFoodName);

これmListenerは次のようなものです。

OnClickListener mListener = new OnCLickListener() {

     @Override
     public void onClick(View v) {
         String foodName = (String)v.getTag();
         // store the value.
     }
}

また、ビューをと にLayoutParams 追加するときは、適切なものを使用することをお勧めします。TableRowTableRowTableLayout

ビューをに追加する場合TableRow

newrow.addView(plusButton, new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

に追加するTableRow場合TableLayout

tablePoints.addView(newrow, new Tablelayout.LayoutParams(Tablelayout.LayoutParams.MATCH_PARENT, Tablelayout.LayoutParams.WRAP_CONTENT));

2.2未満のバージョンをサポートしている場合はFILL_PARENT、の代わりにを使用してMATCH_PARENTください。

于 2012-10-19T13:24:46.043 に答える