기본 목록을 확장하는 내 List View 용 사용자 정의 어댑터를 작성했습니다. 내 list_item.xml에 다른 행을 추가 할 때까지 제대로 작동했습니다. 이제 내 OnItemClickListner에서 클릭 할 때 숨겨진 행의 항목에 대한 설명이 표시되어야합니다. 어떤 항목을 클릭하면 항목의 행이 표시되고 다른 항목은 목록의 맨 아래에 표시됩니다. 단 하나의 항목 만 눌렀지만 항목의 행을 다시 스크롤하면 클릭하면 사라지지만 다른 하나는 열렸습니다. 나는 수색하고 그것이 내가 bindview를 사용하지 않기 때문에 그것이 있을지도 모른다는 것을 발견했다. 그리고 모든 List는 그것들을 재사용한다. 그 경우에는 어떻게 내 customAdapter에 bindVIew를 구현할 수 있습니다. 내 customAdapterAndroid : ListView & customAdapter - 클릭하면 2 개 항목의 정보를 보여줍니다./editText를 클릭 할 수 없습니다.
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
if ((((LinearLayout) view.findViewById(R.id.edit)).getVisibility()) == (View.VISIBLE))
{
((LinearLayout) view.findViewById(R.id.edit)).setVisibility(View.GONE);
}else
{
((LinearLayout) view.findViewById(R.id.edit)).setVisibility(View.VISIBLE);
((EditText) view.findViewById(R.id.itemn)).setFocusable(true);
new LoadCategories().execute();
}
2 문제의 ataached의 내 클릭에 청취자와의 getView : 내 설명 행이 내가 어떤 항목을 누르면 항목에서 볼 수있는 설명을 보여줍니다 글고을 가지고 있습니다. 하지만 그것을 변경하거나 그것을 편집 할 때 그것을 누르면 언론에 나타납니다.
public View getView(final int position, View convertView, ViewGroup parent) {
System.out.println("getView " + position + " " + convertView);
final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(l, null);
holder = new ViewHolder();
holder.id = (TextView)convertView.findViewById(R.id.id);
holder.name = (TextView)convertView.findViewById(R.id.name);
holder.price = (TextView)convertView.findViewById(R.id.price);
holder.description = (TextView)convertView.findViewById(R.id.description);
holder.button = (Button) convertView.findViewById(R.id.update);
holder.btn = (Button) convertView.findViewById(R.id.order);
holder.en = (EditText)convertView.findViewById(R.id.itemn);
holder.ep = (EditText)convertView.findViewById(R.id.pri);
holder.ed = (EditText)convertView.findViewById(R.id.descript);
convertView.setTag(holder);
}
else {
holder = (ViewHolder)convertView.getTag();
}
holder.id.setText(getId(getItem(position)));
holder.name.setText(getName(getItem(position)));
holder.price.setText("£ " + getPrice(getItem(position)));
holder.description.setText(getDesc(getItem(position)));
holder.btn.setVisibility(View.GONE);
holder.en.setText((holder.name.getText()).toString());
holder.ep.setText((holder.price.getText()).toString());
holder.ed.setText((holder.description.getText()).toString());
return convertView;
}
public void clear(){
itemsList.clear();
notifyDataSetChanged();
}
}
여기 내 list_item.xml입니다. 기본적으로 첫 번째 tableRow는 hashMap의 배열에서 전달 된 모든 정보를 보여줍니다. 두 번째 행은 아직 사용되지 않았습니다. 세 번째 TableRow는 첫 번째 행에서 정보를 가져 와서 editText로 설정합니다. 그런 다음 수정할 수 있으므로 나중에 수정 된 정보로 데이터베이스를 업데이트하는 데 사용됩니다. 세 번째 행은 숨겨져 있으며 항목을 누르면 표시됩니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false" >
<TextView
android:id="@+id/id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:visibility="gone" />
<TextView
android:id="@+id/quantity"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:gravity="left"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold"
android:typeface="serif"
android:visibility="gone" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="left"
android:layout_weight="3"
android:gravity="left"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold"
android:typeface="serif" />
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="right"
android:paddingRight="15dp"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold"
android:typeface="serif" />
<Button
android:id="@+id/order"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="0"
android:focusable="false"
android:minHeight="0dp"
android:minWidth="50dp"
android:text="+"
android:textStyle="bold" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tableRow1"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:textStyle="bold"
android:typeface="serif"
android:visibility="gone" />
</TableRow>
<TableRow
android:id="@+id/TableRow01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="false"
android:layout_alignParentLeft="true"
android:layout_below="@id/tableRow2"
android:gravity="center_horizontal" >
<LinearLayout
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone" >
<EditText
android:id="@+id/itemn"
android:layout_width="match_parent"
android:layout_height="69dp"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="top|left"
android:hint="NAME"
android:inputType="text"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<EditText
android:id="@+id/descript"
android:layout_width="match_parent"
android:layout_height="82dp"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="top|left"
android:hint="DESCRIPTION"
android:inputType="textMultiLine"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<EditText
android:id="@+id/pri"
android:layout_width="match_parent"
android:layout_height="62dp"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="top|left"
android:hint="£ PRICE"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<Spinner
android:id="@+id/spinne"
style="@style/spinner_style"
android:layout_width="352dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/dropdown"
android:gravity="center"
android:overScrollMode="always"
android:prompt="@string/orders"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<Button
android:id="@+id/update"
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.55"
android:focusable="false"
android:text="update"
android:textAllCaps="true" />
</LinearLayout>
</TableRow>
</RelativeLayout>
답장을 보내 주셔서 감사합니다. 두 번째 부분에 관해서. 그것은 잘 작동하지만 아무도 내가 그것을 다 끝내면 항목을 닫거나 숨길 확장 부분을 억압 할 수 없다. 첫 번째 부분에 대해서는 제가 비디오를 보았을 때의 모든 예제입니다.하지만 제가 직면 한 문제는 실제로 문제가 아닙니다. 제가 확장 된 부분은 전체 항목이 아니라 아래로 스크롤 할 때 항목을 누르면 사라집니다. . –
질문 아래의 [ "edit"] (http://stackoverflow.com/posts/15147124/edit)를 클릭하고 각 행에 사용하는 XML을 게시하십시오. 그래서 무슨 일이 일어나고 있는지 더 잘 알 수 있습니다. (당신이 이것을했을 때 알려주세요.) – Sam
예. 나는 그것을 더하고 그것보다 조금 더 설명해야합니다. 감사합니다 –