この問題の洞察をしてください。 私はこのListViewを初めて使っています。私はデータベースからデータを入れて、リスト項目のIDをDBレコードのIDに設定しました。TableRowのAndroidカスタムListView。 setOnclickListener?
レイアウト用にandroid.R.layout.simple_list_item_1を使用する場合はすべてOK、テキストが表示されるTextView用にandroid.R.id.text1を使用してください。 私はsetOnItemClickListenerを設定して、Toastの正しいデータ(項目の位置と_idが設定したもの)を取得しました。
私は、リストアイテムのカスタムレイアウトとしてTableRowまたはTableLayoutを使用したいと思っていました。 それは動作しますが、TableRow(つまりTableRow自体)のViewsへの参照を取得する方法がわかりません。
setOnItemClickListenerが機能しなくなり、その行でsetOnclickListenerを使用することができません。
私はListViewアイテムのPOSITIONとIDを取得したい場合や、スマートなものを使用する必要がある場合、何とかそのようなテクニックを使用できますか?
これは私のコードです:
public class ListView1 extends ListActivity {
private DBAdapter db;
private Cursor getMatchigItems;
private OnItemClickListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
db = new DBAdapter(this);
db.open();
getMatchigItems = db.getMatchingItems(4, 1);
startManagingCursor(getMatchigItems);
// SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
// android.R.layout.simple_list_item_1,
// getMatchigItems,
// new String[]{db.KEYITEMS_TXTITEMNAME, db.KEYITEMS_ROWID},
// new int[]{android.R.id.text1});
// setListAdapter(adapter);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.table_row,
getMatchigItems,
new String[]{db.KEYITEMS_TXTITEMNAME, db.KEYITEMS_ROWID},
new int[]{R.id.textViewItems1});
setListAdapter(adapter);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(listener);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(), "id: " + String.valueOf(id) + "\npos: " + String.valueOf(position), Toast.LENGTH_SHORT).show();
};
});
}
}
そして、これは私が使用していたのTableRowのレイアウトです:何かアドバイスを事前に
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableRowLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableRow
android:id="@+id/tableRowLayoutRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rowcat"
android:layout_marginTop="2dp"
android:minHeight="40dp" android:gravity="center_vertical">
<View android:id="@+id/imagePlaceholderBlank1Items"
android:layout_width="40dp"
android:minHeight="40dp" android:layout_height="fill_parent" android:background="@drawable/editicon"/>
<TextView android:id="@+id/textViewItems1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tule bo ime artikla" style="@style/whiteText" android:layout_marginLeft="10dp" android:ellipsize="marquee" android:lines="1" android:focusable="true" android:width="220dp" android:scrollHorizontally="true" android:marqueeRepeatLimit="marquee_forever" android:focusableInTouchMode="true"/>
<TextView android:id="@+id/imagePlaceholderButton1Items"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:minHeight="40dp"
android:gravity="center" android:textColor="#FFF" android:background="@drawable/buttonoff" android:tag="off"/>
</TableRow>
</TableLayout>
感謝を!
なぜTableLayoutを使用していますか?レイアウトは、水平のLinearLayoutを使用するとより効果的に実装できます。 –
はい私はそう思った。物語は、私はテーブルの中でいくつかのテーブルの行を膨らませていたということです。私がプロジェクトを終えたとき、私はAndroidの莫大な努力と約15行以上を膨らませる時間がかかることを知ったので、できるだけ多くの完成した仕事を続けたいと思っていました。それはリストビューアイテムのクリックで変化するイメージを持つことが可能ですか? – PacQ