이 문제에 대한 통찰력을 부탁드립니다. 저는이 ListView를 처음 사용합니다. 나는 데이터베이스에서 데이터를 넣고 목록 항목의 ID를 DB 레코드의 id로 설정했습니다.TableRow가 포함 된 Android 사용자 정의 ListView. setOnclickListener?
레이아웃에는 android.R.layout.simple_list_item_1을 사용하고, 내 텍스트가있는 TextView에는 android.R.id.text1을 사용하면 좋습니다. 심지어 setOnItemClickListener를 설정하고 토스트 오순절 올바른 데이터 (항목 위치 및 _id 설정)가 있습니다.
목록 항목의 사용자 지정 레이아웃으로 TableRow 또는 TableLayout을 사용하고 싶습니다. 그게 작동하지만 TableRow (즉, TableRow 자체)의 뷰에 대한 참조를 얻는 방법을 모르겠습니다.
setOnItemClickListener가 작동을 멈추고 행에서 setOnclickListener를 사용할 수 없습니다.
POSITION 및 ListView 항목의 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를 사용해,보다 효율적으로 구현할 수 있습니다. –
네, 그렇게 생각했습니다. 그 이야기는 제가 테이블에있는 테이블 행을 팽창시키고 있다는 것입니다. 프로젝트를 마쳤을 때 나는 안드로이드의 노력과 시간이 15 줄 이상 늘어날 것을 알았다. 그래서 지금 나는 끝낼 수있는만큼 많은 일을하고 싶었다. 그러나 나는 그렇게하지 않을 것 같다. :) Is Is 목록보기 항목에서 클릭하면 이미지가 변경 될 수 있습니까? – PacQ