2015-10-01 4 views
0

Я хочу проверить каждый элемент, который я нажимаю в GridView, после того, как я держусь за изображение и начинаю onItemCheckedStateChanged. Я имею в виду, что я хочу программно изменить каждый фон каждого изображения, которое я бы проверял, и я не знаю, как ... Вот мой GridViewAdapter:Проверенный элемент в GridView

public class GridViewAdapter extends BaseAdapter { 
// Declare variables 
ImageView image; 
private Activity activity; 
private String[] filepath; 
private String[] filename; 

private static LayoutInflater inflater = null; 

public GridViewAdapter(Activity a, String[] fpath, String[] fname) { 
    activity = a; 
    filepath = fpath; 
    filename = fname; 
    inflater = (LayoutInflater) activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

} 


public int getCount() { 
    return filepath.length; 

} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 


public View getView(int position, View convertView, ViewGroup parent) { 
    View vi = convertView; 
    if (convertView == null) 
     vi = inflater.inflate(R.layout.gridview_item, null); 
    // Locate the TextView in gridview_item.xml 
    TextView text = (TextView) vi.findViewById(R.id.text); 
    // Locate the ImageView in gridview_item.xml 
    image = (ImageView) vi.findViewById(R.id.grid_image); 





    // Set file name to the TextView followed by the position 
    File file = new File(filepath[position]); 
    Picasso.with(activity).load(file).placeholder(R.drawable.rtrt).fit().centerCrop().into(image); 


    // Decode the filepath with BitmapFactory followed by the position 


    // Set the decoded bitmap into ImageView 
    // image.setImageBitmap(bmp); 
    return vi; 
} 

} 

А вот основная деятельность onItemCheckedStateChanged:

public class MultiChoiceModeListener implements 
      GridView.MultiChoiceModeListener { 
     @Override 
     public void onItemCheckedStateChanged(android.view.ActionMode mode, int position, long id, boolean checked) { 

      selectCount = grid.getCheckedItemCount(); 
      int checkedItemPosition = grid.getCheckedItemPosition(); 

      switch (selectCount) { 
       case 1: 
        mode.setSubtitle("One picture selected"); 

        break; 
       default: 
        mode.setSubtitle("" + selectCount + " pictures selected"); 
        break; 
      } 
     } 


     @Override 
     public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) { 
      mode.setTitle("Select pictures"); 
      mode.setSubtitle("One picture selected"); 


      return true; 

     } 

     @Override 
     public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) { 
      return true; 
     } 

     @Override 
     public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) { 

      return true; 
     } 

     @Override 
     public void onDestroyActionMode(android.view.ActionMode mode) { 

     } 
    } 

Я stucked в течение 2 дней по этому вопросу, любая помощь будет быть оцененным !!! Благодаря!

ответ

0

Убедитесь, что для каждого ImageView или TextView вы хотите заменить различными параметрами, которые вам необходимы, чтобы их видимость для замены на была «невидимой», поэтому, когда вы нажимаете «Item», она изменится на «видимый».

объектов XML будет выглядеть следующим образом:

<ImageView 
android:id="@+id/grid_image"/> 

<ImageView 
android:id="@+id/check_grid_image" 
android:visibility="invisible"/> 

GridViewAdapter:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder; 

    if (convertView == null) { 
     convertView = LayoutInflater.inflate(R.layout.gridview_item, null); 
     holder = new ViewHolder(); 
     holder.image = (ImageView)convertView.findViewById(R.id.grid_image); 
     holder.checkImage = (ImageView)convertView.findViewById(R.id.check_grid_image); 
     convertView.setTag(holder); 
    } 
    GridView gridView = (GridView)parent; 
    if (gridView.isItemChecked(position)) { 
     holder.checkImage.setVisibility(View.VISIBLE); 
    } 
    else { 
     holder.checkImage.setVisibility(View.INVISIBLE); 
    } 
// Picasso omitted 

    return convertView; 
} 

private static class ViewHolder { 
    ImageView image; 
    ImageView checkImage; 
} 

ActivityMain:

protected AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     ImageView checkImage = (ImageView)view.findViewById(R.id.check_grid_image 

     if (mGridView.isItemChecked(position)) { 
      // Action when Item checked 
      checkImage.setVisibility(View.VISIBLE); 
     } 
     else { 
      // Reverse Action 
      checkImage.setVisibility(View.INVISIBLE); 
     } 
    } 
}; 

Это работает в моем проекте, но дайте мне знать, если это работает для тебя тоже!

+0

Да, это работает, но я нашел простое решение, я просто сделал селектор xml-файла в drawble и поместил его в фоновое изображение, но спасибо, в любом случае, за ваше время, спасибо! –

+1

Отлично, что вы нашли решение и счастливое кодирование! –

Смежные вопросы