2013-12-22 2 views
0

У меня есть простой список с ImageView и textView.Показать элемент списка ListView (ImageView) для другого действия

Теперь, когда я нажимаю на свой список, мне нужно отправить ImageView в другое действие.

Я прочитал много ответов SO, но не смог найти лучшего решения для этого.

Это мой lisview_items.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 
    <ImageView 
     android:id="@+id/photo" 
     android:layout_width="150dip" 
       android:layout_height="100dip" 
     android:paddingRight="15dp" 
     android:paddingLeft="15dp"/> 
    </LinearLayout> 
    <RelativeLayout 
    android:layout_width="fill_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       android:layout_marginLeft="160dp" 
       android:layout_marginTop="10dp" 
       android:descendantFocusability="blocksDescendants"> 
    <TextView android:id="@+id/name" 
     android:textSize="14sp" 
     android:textStyle="bold" 
     android:textColor="#000000" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</RelativeLayout> 
<RelativeLayout> 

CustomAdapter:

public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = l_Inflater.inflate(R.layout.item_details_view, null); 
     holder = new ViewHolder(); 
     holder.txt_itemName = (TextView) convertView.findViewById(R.id.name); 
     holder.itemImage = (ImageView) convertView.findViewById(R.id.photo); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.txt_itemName.setText(itemDetailsrrayList.get(position).getName()); 
      holder.itemImage.setImageResource(imgid[itemDetailsrrayList.get(position).getImageNumber() - 1]); 
} 

MyListView OnClick:

ArrayList<ItemDetails> image_details = GetSearchResults(); 

    final ListView lv1 = (ListView) findViewById(R.id.list); 
    lv1.setAdapter(new ItemListBaseAdapter(this, image_details)); 


    OnItemClickListener itemClickListener = new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

      Object o = lv1.getItemAtPosition(position); 
      ItemDetails obj_itemDetails = (ItemDetails)o; 
      Toast.makeText(ListViewImagesActivity.this, "You have chosen : " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show(); 
      ProductName =obj_itemDetails.getName(); 
     } 
    }; 

Я использую sharedpreferences для отправки название продукта, как показано ниже, и его работает абсолютно нормально

SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
data.edit().putString("SelectedProduct", ProductName).commit(); 

Аналогичным образом, как я могу отправить изображение, как в ArrayList, как показано above..Can, кто пролил мне некоторый свет на этом использовании

ответ

0

Вы можете сохранить путь изображения на ItemDetails объекта, как вы делают с именем. Затем вы можете пройти путь через Intent к новому Activity.

Если изображение доступно во время компиляции, вы можете передать ссылку на его идентификатор, как сказал Гейб, вместо пути к его местоположению.

0

Если вы действительно переходите на эту деятельность, вы можете передать идентификатор ресурса изображения в дополнительных целях, а затем использовать getResources().getDrawable(ID).

0

Вы должны следующее:

final ArrayList<ItemDetails> image_details = GetSearchResults(); 

final ListView lv1 = (ListView) findViewById(R.id.list); 
lv1.setAdapter(new ItemListBaseAdapter(this, image_details)); 


OnItemClickListener itemClickListener = new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

     ItemDetails selectedItem = image_details.get(position); 
     //To-DO get you data from the ItemDetails Getter 
     // selectedItem.getImage() or selectedItem.getName() .. etc 
     // the send the data using intent when opening another activity 
     Intent intent = new Intent(CurrentActivity.this, DisplayImageActivity.class); 
     intent.putExtra("image",selectedItem.getImage()); 
     intent.putExtra("name",selectedItem.getName()); 
     startActivty(intent); 

    } 
}; 

Затем в DisplayImageActivity в OnCreate

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent i = getIntent(); 
     String image = i.getStringExtra("image"); 
     String name = i.getStringExtra("name"); 

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