0

Я работаю над примером GridView У меня есть количество изображений в моем gridview, и если я нажму на один элемент, он должен быть открыт или отобразить на моем другом мероприятии (DetailActivity.class) с этим изображением и именем изображения. Я пытался, но не работал.
Внизу ниже мой код, который не работает, вы знаете, что не так?Пример GridView с изображением и изображением Название

1.grid_item_layout.xml

<ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:id="@+id/grid_image" 
    android:scaleType="centerCrop" 
    android:layout_gravity="center_horizontal" /> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/grid_image_text" 
    android:layout_marginTop="5dp" 
    android:gravity="center" 
    android:maxLines="2" 
    android:ellipsize="marquee" 
    android:textSize="12sp"/> 

класс 2.MainActivity

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

      ImageItem imageItem = (ImageItem)parent.getItemAtPosition(position); 

      Intent intent = new Intent(MainActivity.this, DetailsActivity.class); 

      intent.putExtra("value1",imageItem.getTitle()); 
      intent.putExtra("value2", imageItem.getImage()); 
      startActivity(intent); 

     } 
    }); 

3 открытый класс DetailsActivity расширяет активность {

private ImageView imageView; 
private TextView textView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_details_view); 

    textView = (TextView)findViewById(R.id.text); 

    Bundle b = getIntent().getExtras(); 
    String val1 = b.getString("value1"); 
    textView.setText(val1); 


    // I also try below code but not working..! 

    String title = getIntent().getStringExtra("value1"); 
    Bitmap b = getIntent().getParcelableExtra("value2"); 

    textView = (TextView)findViewById(R.id.text); 
    textView.setText(title); 



} 

}

4 activity_details_view.xml

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/image" 
    android:layout_gravity="center" 
    android:scaleType="fitCenter"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/text" 
    android:text="hello" 
    android:textSize="40dp"/> 
+0

Что вы подразумеваете под * нерабочим * ?. Вы получаете какую-либо ошибку? – Rohit5k2

+0

Да, ошибка, к сожалению, приложение не остановилось/или какое-то время я иду в следующую деятельность, но ее ничего не пойдет с каким-либо результатом, который я хочу сделать! –

+0

Пожалуйста, подтвердите свою ошибку. – Rohit5k2

ответ

0

Создание глобального списка, который вы передаете в ваш GridView адаптера и на нажмом слушателе вы можете непосредственно получить этот объект от имени позиции. Вот фрагмент кода: -

public class MainActivity extends Activity{ 
private List<ImageItem> mImageItemList; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
//write your logic of getting list of data which you need to display in gridview 
mImageItemList = new ArrayList<ImageItem>(); 
// set this list to your adapter then in onitem click you just need to change the logic of getting specific item 

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

     ImageItem imageItem = mImageItemList.get(position); 

     Intent intent = new Intent(MainActivity.this, DetailsActivity.class); 

     intent.putExtra("value1",imageItem.getTitle()); 
     intent.putExtra("value2", imageItem.getImage()); 
     startActivity(intent); 

    } 
}); 

} 
} 

Все остальное будет таким же.

Причина: - ImageItem imageItem = (ImageItem) parent.getItemAtPosition (position);

Эта строка вернет представление родителя (каждой строки). Здесь позиция вернет позицию позиции строки. Подробнее click here

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