2015-09-16 6 views
-2

Итак, у меня есть сетка, которая отображает изображения из базы данных. когда пользователь нажимает на один элемент, он должен открыть новую активность, отображающую изображения и некоторую информацию, связанную с изображением.Доступ к данным gridView элемента данных android

Теперь я хочу получить данные из элемента gridview, например, например imageId и передать его новому действию с помощью намерения.

Как получить доступ к данным сетки.

public class MyPostsGridFragment extends Fragment { 

    private ParseQueryAdapter<ParseObject> mainAdapter; 
    private MyPostsGridAdapter imgAdapter; 
    private GridView gridview; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.gridview_fragment, container, false); 


     // Initialize main ParseQueryAdapter 
     mainAdapter = new ParseQueryAdapter<ParseObject>(getActivity().getApplicationContext(), "Test"); 


     // Initialize the subclass of ParseQueryAdapter 
     imgAdapter = new MyPostsGridAdapter(getActivity().getApplicationContext()); 


     // Initialize gridView and set initial view to mainAdapter 
     gridview = (GridView) v.findViewById(R.id.gridview); 
     gridview.setAdapter(mainAdapter); 
     mainAdapter.loadObjects(); 


     if (gridview.getAdapter() == mainAdapter) { 
      gridview.setAdapter(imgAdapter); 
      imgAdapter.loadObjects(); 
     } else { 
      gridview.setAdapter(mainAdapter); 
      mainAdapter.loadObjects(); 
     } 

     gridview.setAdapter(new MyPostsGridAdapter(getActivity())); 


     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       Intent intent = new Intent(getActivity(), SinglePostActivity.class); 
       //intent.putExtra("") 
       Log.i("position", "the position is : "+position); 
       startActivity(intent); 


      } 
     }); 


     return v; 
    } 


} 

и это мой адаптер

public class MyPostsGridAdapter extends ParseQueryAdapter<ParseObject> { 
    //MediaPlayer mediaPlayer; 

    private LayoutInflater mInflater = null; 
    ImageButton playPause; 
    private boolean isPlaying = false; 


    public MyPostsGridAdapter(Context context) { 


     super(context, new QueryFactory<ParseObject>() { 
      public ParseQuery create() { 
       ParseQuery query = new ParseQuery(Images.class); 
       query.whereEqualTo("createdBy", ParseUser.getCurrentUser()); 
       query.include("createdBy"); 
       query.orderByDescending("createdAt"); 
       return query; 
      } 
     }); 
    } 

    // Customize the layout by overriding getItemView 
    @Override 
    public View getItemView(final ParseObject object, View v, ViewGroup parent) { 
     final ViewHolder holder; 


     if (v == null) { 
      v = View.inflate(getContext(), R.layout.gridview_item, null); 
      holder = new ViewHolder(); 
      holder.btnOne = (ImageView) v.findViewById(R.id.playPause); 

      v.setTag(holder); 
     } 

     super.getItemView(object, v, parent); 

     // Add and download the image 
     ParseImageView image = (ParseImageView) v.findViewById(R.id.voice); 
     ParseFile imageFile = object.getParseFile("img"); 
     if (imageFile != null) { 
      //Get singleton instance of ImageLoader 
      ImageLoader imageLoader = ImageLoader.getInstance(); 
      //Load the image from the url into the ImageView. 
      imageLoader.displayImage(imageFile.getUrl(), image); 

     }//end if 



     String name = object.getObjectId(); 
     //final int objId= Integer.parseInt(name); 
     String test = object.getString("createdBy"); 

     // nameTextView.setText(test); 

     return v; 
    }//end getItem View 

    class ViewHolder { 
     ImageView btnOne; 

    } 


} 
+0

Вы можете использовать s imple методы Getter и Setter, setId при извлечении из базы данных и getId при необходимости. –

+0

У вас есть какой-либо пример или исходный код, пожалуйста? У меня есть сеттеры и геттеры, но я не знаю, как их использовать @HtmlTosin – Rawan

ответ

0

Вы можете получить данные из OnItemClickListener, как показано ниже

OnItemClickListener listener = new OnItemClickListener(){ 

    @Override 
    onItemClick(AdapterView<?> parent, View view, int position, long id){ 
     String name = ((TextView) view.findViewById(R.id.txtText)).getText(); 
     Intent intent = new Intent(context,newActivityName.class); 
     intent.putExtra("username",name); 
     startActivity(intent); 
    } 

} 
+0

gridview отображает только изображение, я хочу отобразить имя в новом действии. как получить изображение? – Rawan

+0

Опубликуйте свой код, чтобы я мог помочь вам ... –

+0

Я обновил свой вопрос, вы можете мне помочь сейчас? – Rawan

0
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
     Toast.makeText(getActivity(), "Item Clicked: " + position, Toast.LENGTH_SHORT).show(); 
     Intent intent = new Intent(getActivity(), DisplayImage.class); 


     intent.putExtra("position", position); 
     startActivity(intent); 

    } 

передать позицию или идентификатор для следующей операции и отображения информации с image

+0

поэтому после передачи позиции, как получить данные, связанные с этим изображением из базы данных? – Rawan

+0

получить позицию, сопоставить ее с идентификатором изображения или номером изображения –

+0

вы можете использовать операторы switch или if –

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