Listede, bazı öğeleri LongClick'e seçmeye çalıştığım ListView'im var. Ekranımda 8 öğe görebiliyorum (başka bir akıllı telefon üzerinde 6 tane ürün görebiliyorum.) ListView'imde çok fazla öğeye sahip olduğumda (örneğin 23) ve ben bir öğenin ilk satırında LongClick'i değiştirdim, ancak değiştirilen resmi görüyorum. aşağı kaydırırsam 10 ve 19 öğelerin de resim değiştirdiğini görebilirim (kontrol edilmiş gibi). LongClick'ten sonra başka bir akıllı telefonda, ilk öğeyi değiştirdiğimde 8 ve 16'yı değiştiriyorum vb.). Gördüğünüz gibi, akıllı telefonumu sunabildiğim gibi aynı sayıda öğeden hemen sonra, ListView öğelerini değiştirebilirim. "Ek" öğelerin gerçek durumu değişmedi, yalnızca onların resim görünümü. ListView öğelerinin görüntü grubunu değiştiren yinelenen tuhaf davranışı (grup, ListView öğelerinin sayısını akıllı telefonun aynı anda görüntüleyebileceği öğelerin sayısı kadardır)Fragman List Görünümü tuhaf davranış
Kodumda ne var ne yok ListView bu beklenmedik davranış? Thanx
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import ru.someCode.R;
public class ListItems extends ListFragment {
private ListView lv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_list, null);
lv = getListView();
return rootView;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View view,
int position, long id) {
Log.d("MY", "Checked");
ImageView imageView = ((ImageView) view.findViewById(R.id.operImg));
ImageView imageViewCheck = ((ImageView) view.findViewById(R.id.operImgCheck));
if (lv.isItemChecked(position)) {
lv.setItemChecked(position, false);
imageView.setVisibility(View.VISIBLE);
imageViewCheck.setVisibility(View.GONE);
} else {
lv.setItemChecked(position, true);
imageView.setVisibility(View.INVISIBLE);
imageViewCheck.setVisibility(View.VISIBLE);
}
return true;
}
});
}
}
---- fragment_list.xml ----
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="6dp">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listContainer">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="1dip"
android:divider="@color/listDev"
android:footerDividersEnabled="true"/>
<TextView
android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="16sp"
android:gravity="center" />
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/progressContainer"
android:layout_centerInParent="true"
android:gravity="center"
android:visibility="gone">
<ProgressBar style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
---- adaptör kod parçası ---
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.history_list_group, null);
holder = findViewsById(convertView);
convertView.setTag(holder);
if (lv == null) {
lv = (ListView) parent;
}
} else {
holder = (ViewHolder) convertView.getTag();
}
SetDataView(holder, position);
return convertView;
}
---- history_list_group. xml -
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/circle"
android:id="@+id/operImgLayout"
android:layout_gravity="center_vertical"
android:layout_margin="6dp">
<ru.phone4pay.phone4pay.extlib.MLRoundedImageView
android:id="@+id/operImg"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_action_1"/>
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:id="@+id/operImgCheck"
android:src="@drawable/ic_action_tick"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:visibility="gone"/>
</RelativeLayout>
</LinearLayout>
GetView'iniz düzgün şekilde kodlanmamış gibi görünüyor. –
Tam bağdaştırıcı kodunu göster ve setDataView kodu –
Bu soruyu reddetmeniz gerekmiyor. @ user5546244 Konumunuzu koruyarak, benzer bir soruyu kontrol edebilirsiniz ve aynı zamanda http://stackoverflow.com/questions/11190390/checking-a-checkbox-in-listview-makes-other-random-checkboxes-checked -eğitim .. verilen bağlantıyı kontrol edin ve cevap deneyin ve kodunuzla eşleştirin, aynı sorunu yaşadığınızı tespit ettiyseniz, bunu kullanarak çözmek ve kendi sorununun başarıyla çözüldükten sonra kendi sorunuzu silin – MKJParekh