5

Satırları mysql veritabanı aracılığıyla doldurduğum bir Liste görünümü var. Her satırda görünen sen testere benim veritabanından geliyorimageview konumu içinde görünüm görünümüne geçin

enter image description here

Bu isimler ve ImageView benim düzen listeden olduğu OYUN (:

Bu

Yaptığım şeyin bir görünümüdür veritabanına bir satır eklediğimde). Ben (amaç duraklama ImageView vb içine geçiriliyor) Çok başka satırlardan başka oynatma düğmelerini değiştirir, ancak hepsi değil, o oynat düğmesinin bir tıklama işleyicisi ayarladığınızda

Şimdi benim sorundur. Bu yüzden pozisyonu alamadığımı düşünüyorum, değil mi? Bu konuda bana yardımcı olabilir misiniz lütfen! Bu benim Ürün sınıfı

public class XXXUpdatesFragment extends Fragment implements AsyncResponse 
,AdapterView.OnItemClickListener{ 

    View view ; 
    private ArrayList<Product> productList; 
    private ListView lvProduct; 
    private FunDapter<Product> adapter; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.xxx_updates_layout, container, false); 
     ImageLoader.getInstance().init(UILConfig.config(getActivity())); 

     lvProduct = (ListView)view.findViewById(R.id.lvProduct); 

     PostResponseAsyncTask taskRead = new PostResponseAsyncTask(getActivity(), this); 

     taskRead.execute("http://symphonyrecords.6te.net/product.php"); 

     return view; 

    } //onCreate 


    @Override 
    public void processFinish(String s) { 
     productList = new JsonConverter<Product>().toArrayList(s, Product.class); 

     BindDictionary<Product> dict = new BindDictionary<Product>(); 
     dict.addStringField(R.id.tvName, new StringExtractor<Product>() { 
      @Override 
      public String getStringValue(Product product, int position) { 
       return product.name; 
      } 
     }); 

     dict.addStringField(R.id.tvDescription, new StringExtractor<Product>() { 
      @Override 
      public String getStringValue(Product product, int position) { 
       return product.description; 
      } 
     }); 

     dict.addStringField(R.id.tvQty, new StringExtractor<Product>() { 
      @Override 
      public String getStringValue(Product product, int position) { 
       return "" + product.qty; 
      } 
     }); 


     adapter = new FunDapter<>(getActivity(), productList, R.layout.d_layout_list_d, dict); 


     lvProduct.setAdapter(adapter); 
     lvProduct.setOnItemClickListener(this); 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Product selectedProduct = productList.get(position); 
     Toast.makeText(getActivity(),selectedProduct.name+"", Toast.LENGTH_SHORT).show(); 
     } 


    } 

geçerli::

Bu

benim Fragment olduğunu

public class Product implements Serializable { 
@SerializedName("pid") 
public int pid; 

@SerializedName("name") 
public String name; 

@SerializedName("qty") 
public int qty; 

@SerializedName("price") 
public String description; 
} 

Ve bu benim Adaptör geçerli:

public class FunDapter<T> extends BaseAdapter implements Filterable { 


private boolean paused = true; 

protected List<T> mDataItems; 
protected List<T> mOrigDataItems; 
protected LongExtractor<T> idExtractor; 
protected final Context mContext; 
private final int mLayoutResource; 
private final BindDictionary<T> mBindDictionary; 
private int oddColorRes; 
private int evenColorRes; 
private FunDapterFilter<T> funDapterFilter; 
private Filter mFilter; 


public FunDapter(Context context, List<T> dataItems, int layoutResource, 
       BindDictionary<T> dictionary) { 
    this(context, dataItems, layoutResource, null, dictionary); 
} 

public FunDapter(Context context, List<T> dataItems, int layoutResource, 
       LongExtractor<T> idExtractor, BindDictionary<T> dictionary) { 
    this.mContext = context; 
    this.mDataItems = dataItems; 
    this.mOrigDataItems = dataItems; 
    this.mLayoutResource = layoutResource; 
    this.idExtractor = idExtractor; 
    this.mBindDictionary = dictionary; 

} 

public void updateData(List<T> dataItems) { 
    this.mDataItems = dataItems; 
    this.mOrigDataItems = dataItems; 
    notifyDataSetChanged(); 
} 

@Override 
public int getCount() { 
    if (mDataItems == null || mBindDictionary == null) return 0; 

    return mDataItems.size(); 
} 

@Override 
public T getItem(int position) { 
    return mDataItems.get(position); 
} 

@Override 
public boolean hasStableIds() { 
    if(idExtractor == null) return super.hasStableIds(); 
    else return true; 
} 

@Override 
public long getItemId(int position) { 
    if(idExtractor == null) return position; 
    else return idExtractor.getLongValue(getItem(position), position); 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    final GenericViewHolder holder; 
    if (null == v) { 
     LayoutInflater vi = 
       (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(mLayoutResource, null); 
     holder = new GenericViewHolder(); 
     holder.root = v; 


     holder.playPause=(ImageView)v.findViewById(R.id.playPause); 
     holder.playPause.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

         if (paused) { 
          holder.playPause.setImageResource(R.drawable.ic_pause); 
          paused=false; 
         } 
         else { 
          paused = true; 
          holder.playPause.setImageResource(R.drawable.ic_play); 
         } 

      }}); 



     FunDapterUtils.initViews(v, holder, mBindDictionary); 

     v.setTag(holder); 


    } else { 
     holder = (GenericViewHolder) v.getTag(); 
    } 

    final T item = getItem(position); 
    showData(item, holder, position); 

    return v; 
} 


private void showData(T item, GenericViewHolder holder, int position) { 

    if (oddColorRes > 0 && evenColorRes > 0) { 
     if (position % 2 == 0) { 
      holder.root.setBackgroundColor(mContext.getResources().getColor(evenColorRes)); 
     } else { 
      holder.root.setBackgroundColor(mContext.getResources().getColor(oddColorRes)); 
     } 
    } 

    FunDapterUtils.showData(item, holder, position, mBindDictionary); 
} 

public FunDapter<T> setAlternatingBackground(int oddColorRes, int evenColorRes) { 

    if (oddColorRes <= 0 || evenColorRes <= 0) { 
     throw new IllegalArgumentException("Color parameters are illegal"); 
    } 

    this.oddColorRes = oddColorRes; 
    this.evenColorRes = evenColorRes; 

    return this; 
} 

public void setIdExtractor(LongExtractor<T> idExtractor) { 
    this.idExtractor = idExtractor; 
} 

@Override 
public Filter getFilter() { 
    return mFilter; 
} 

public void initFilter(FunDapterFilter<T> filter) { 

    if (filter == null) 
     throw new IllegalArgumentException("Cannot pass a null filter to FunDapter"); 

    this.funDapterFilter = filter; 

    mFilter = new Filter() { 

     @Override 
     protected void publishResults(CharSequence constraint, FilterResults results) { 

      List<T> list = (List<T>) results.values; 

      if (results.count == 0) { 
       resetData(); 
      } else { 
       mDataItems = list; 
      } 

      notifyDataSetChanged(); 
     } 

     @Override 
     protected FilterResults performFiltering(CharSequence constraint) { 

      FilterResults results = new FilterResults(); 
      if (constraint == null || constraint.length() == 0) { 

       results.values = mOrigDataItems; 
       results.count = mOrigDataItems.size(); 
      } else { 

       List<T> filter = 
         funDapterFilter.filter(constraint.toString(), mOrigDataItems); 

       results.count = filter.size(); 
       results.values = filter; 

      } 

      return results; 
      } 
     }; 
    } 

    public void resetData() { 
     mDataItems = mOrigDataItems; 
    } 

    } 

Bununla uğraştığım bir hafta oldu, bana yardım edersen çok minnettar olurdum.

cevap

0

modeli sınıfında tek Paramtre ekleyin ve başlangıçta FunDapter sınıfta sıfır

olarak ayarlayın:

holder.playPause=(ImageView)v.findViewById(R.id.playPause); 

    if(mDataItems.get(position).getplayPauseFlag()==1) 
    { 
     holder.playPause.setImageResource(R.drawable.ic_pause); 
    } 
    else 
    { 
     holder.playPause.setImageResource(R.drawable.ic_play); 
    } 


    holder.playPause.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

       if (mDataItems.get(position).getplayPauseFlag()==0) 
       { 
        mDataItems.get(position).setplayPauseFlag(1); 
       } 
       else { 
        mDataItems.get(position).setplayPauseFlag(0); 
       } 
       notifyDataSetChanged(); 
    }}); 
İlgili konular