【问题标题】:Access gridView item's data android访问gridView项目的数据android
【发布时间】:2015-09-16 08:51:41
【问题描述】:

所以我有一个显示来自数据库的图像的网格视图。当用户点击一个项目时,它必须打开显示图像和一些与图像相关的信息的新活动。

现在我想从 gridview 项目中获取数据,例如 imageId,并通过意图将其传递给新活动。

如何访问gridview的数据。

    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;

    }


}

【问题讨论】:

  • 您可以使用简单的 Getter 和 Setter 方法,从 DB 检索时使用 setId,在需要时使用 getId。
  • 请问您有任何示例或源代码吗?我有 setter 和 getter,但我不知道如何使用它们@HtmlTosin

标签: java android gridview


【解决方案1】:

您可以从 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);
  }

}

【讨论】:

  • gridview 只显示图像,我想在新活动中显示名称。如何获取图像?
【解决方案2】:
    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);

    }

将位置或 id 传递给下一个活动并与图像一起显示信息

【讨论】:

  • 那么在传递位置后如何从数据库中获取与该图像相关的数据?
  • 获取位置,与图像id或图像编号匹配
  • 你可以使用 switch 或 if 语句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多