【问题标题】:how to display position based image for following code?如何为以下代码显示基于位置的图像?
【发布时间】:2016-02-08 09:26:41
【问题描述】:

我有以下代码。当我单击网格视图中的图像时,该特定图像应显示在另一个活动中。我该怎么做?

这是我的 Activity 类::

public class ProductsActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.grid_view);

    GridView gridView = (GridView) findViewById(R.id.gridview);
    gridView.setAdapter(new MyAdapter(this));
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
            // this 'mActivity' parameter is Activity object, you can send the current activity.
            Intent i = new Intent(getApplicationContext(), MobileDisplayActivity.class);
            i.putExtra("positionId",position);
            startActivity(i);
        }
    });
}

如何更改适配器类以满足我的要求。我认为问题出在getView()

this is my adapter class:
    private class MyAdapter extends BaseAdapter
{
    private List<Item> items = new ArrayList<Item>();
    private LayoutInflater inflater;

    public MyAdapter(Context context)
    {
        inflater = LayoutInflater.from(context);

        items.add(new Item("Image 1", R.drawable.ic_image4));
        items.add(new Item("Image 2", R.drawable.ic_image5));
        items.add(new Item("Image 3", R.drawable.ic_image4));
        items.add(new Item("Image 4", R.drawable.ic_image5));
        items.add(new Item("Image 5", R.drawable.ic_image4));
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Object getItem(int i)
    {
        return items.get(i);
    }

    @Override
    public long getItemId(int i)
    {
        return items.get(i).drawableId;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup)
    {
        View v = view;
        ImageView picture;
        TextView name;

        if(v == null)
        {
            v = inflater.inflate(R.layout.row_grid, viewGroup, false);
            v.setTag(R.id.picture, v.findViewById(R.id.picture));
            v.setTag(R.id.text, v.findViewById(R.id.text));
        }

        picture = (ImageView)v.getTag(R.id.picture);
        name = (TextView)v.getTag(R.id.text);

        Item item = (Item)getItem(i);

        picture.setImageResource(item.drawableId);
        name.setText(item.name);

        return v;
    }

    private class Item
    {
        final String name;
        final int drawableId;

        Item(String name, int drawableId)
        {
            this.name = name;
            this.drawableId = drawableId;
        }
    }
}

}

【问题讨论】:

标签: android android-imageview android-gridview


【解决方案1】:

您可以发送 id 或您的可绘制对象(也是整数),而不是将项目的位置发送到下一个活动。

这样做

public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
    // this 'mActivity' parameter is Activity object, you can send the current activity.
    int imageId = ((Item) parent.getItemAtPosition(position)).drawableId;
    Intent i = new Intent(getApplicationContext(), MobileDisplayActivity.class);
    i.putExtra("imageId", imageId);
    startActivity(i);
 }

MobileDisplayActivity 活动中简单地执行此操作

int imageId = getIntent().getIntExtra("imageId", 0);
if(imageId > 0)
    imageView.setBackgroundResource(imageId);
else
    // something went wrong

注意:Item 类设为公共静态或独立定义。

【讨论】:

  • @brahmyadigopula:精确图像是什么意思?
  • 我的意思是 gridView @Rohit 中的定位图像
  • 除了空白布局外,点击图片后甚至什么都不显示
  • 没关系,先生..我解决了问题...这都是关于清单文件的..我忘记为 MobileDisplayActivity 类添加 Inflater...感谢您的重播
【解决方案2】:

你应该像下面的代码那样把drawable id放入intent中:

public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    int drawableId = ((Item) parent.getItemAtPosition(position)).drawableId;
    Intent intent = new Intent(ProductsActivity.this, MobileDisplayActivity.class);
    intent.putExtra("DRAWABLE_ID", drawableId); 
    startActivity(intent);
}

您还应该将 Item 类设为 public 静态,以便从活动中访问它。 drawableId 应该是公开的(或者您可以为此字段创建一个 getter)。

【讨论】:

  • 它工作但不显示图像..它只是显示空白页
  • 问题似乎出在 MobileDisplayActivity
  • 我解决了问题先生...问题出在意向过滤器中添加清单文件。感谢您的重播
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 2011-05-05
相关资源
最近更新 更多