2015-03-27 4 views
0

Ну, я не знаю, что должно быть правильным заголовком для вопроса, но моя проблема довольно удивительная, не знаю, возможно ли это или нет. Вот мой вопросКак реализовать представление списка с двумя параллельными изображениями в строке

У меня есть серия изображений, и я хочу установить их в ListView. Ниже приведен ряд ListView Xml. (названный anim_list_row)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="100" 
    > 


    <ImageView 
     android:layout_width="0dp" 
     android:layout_height="350dp" 
     android:scaleType="fitXY" 
     android:id="@+id/iv_dummy_left" 
     android:layout_marginLeft="5dp" 
     android:layout_weight="50"/> 

    <ImageView 
     android:layout_width="0dp" 
     android:layout_height="350dp" 
     android:scaleType="fitXY" 
     android:id="@+id/iv_dummy_right" 

     android:layout_weight="50" 
     android:layout_marginRight="5dp"/> 
</LinearLayout> 

в этом вы можете убедиться, что я хочу, чтобы установить 2 различных изображения в двух различных скажем левый и правый ImageView. Ниже мой адаптер класса

public class MListAdapter extends BaseAdapter { 


private Context context; 
private ArrayList<AnimListItems> mAnimListItems; 

public MListAdapter(Context context, ArrayList<AnimListItems> mAnimListItems){ 
    this.context = context; 
    this.mAnimListItems = mAnimListItems; 
} 


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

@Override 
public Object getItem(int position) { 
    return navDrawerItems.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     LayoutInflater mInflater = (LayoutInflater) 
       context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     convertView = mInflater.inflate(R.layout.anim_list_row, null); 
    } 

    ImageView imgIconLeft = (ImageView) convertView.findViewById(R.id.iv_dummy_left); 
    ImageView imgIconRight = (ImageView) convertView.findViewById(R.id.iv_dummy_right); 
    //TextView txtTitle = (TextView) convertView.findViewById(R.id.title); 


    imgIconLeft.setImageResource(navDrawerItems.get(position).getIcon()); 
    //if I do not do +1 here it sets same image to both left and right ImageView 
    imgIconRight.setImageResource(navDrawerItems.get(position+1).getIcon()); 
    // txtTitle.setText(navDrawerItems.get(position).getTitle()); 



    return convertView; 
} 

}

так вот проблема в этом виде списка работает, но он назначая те же образы как ImageView в строке. и если я +1 следующим образом

imgIconRight.setImageResource (navDrawerItems.get (положение + 1) .getIcon())

, то она помогает в изменении вида изображения на правой стороне в строка, но вторая строка повторяет изображение в его первом представлении изображения (я имею в виду, что изображение в левой части ImageView второй строки такое же, как изображение в правом ImageView первой строки.)

Итак, что такое решение

  • Повторение изображений в строках.
  • И как я могу получить каждый идентификатор ImageView и его ресурс изображения, чтобы я мог узнать, какое изображение было нажато. И тогда я смогу установить это изображение в ImageView другой деятельности. Я хочу сказать, что я хотел знать, какое изображение было нажато пользователем, поэтому я хочу установить одинаковое изображение в ImageView другой активности.

ответ

1

Здравствуйте Если вы хотите, чтобы пользователь один один массив, то я бы сделал один демонстрационный пример ваша проблема быстро, я думаю, это поможет вам.

MainActivity.java

public class MainActivity extends ActionBarActivity { 

    Item item; 
    ArrayList<Object> obj = new ArrayList<Object>(); 
    MListAdapter adapter; 
    ListView lv; 

    int[] arrEnabledImageIds = new int[] { R.drawable.ic_launcher, 
      R.drawable.ic_delete_icon, R.drawable.ic_delete_icon, 
      R.drawable.ic_launcher, R.drawable.ic_delete_icon, 
      R.drawable.ic_launcher }; 

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

     lv = (ListView) findViewById(R.id.listView1); 

     for (int i = 0; i < arrEnabledImageIds.length; i++) { 
      Item itemInfo = new Item(); 
      itemInfo.image1 = arrEnabledImageIds[i]; 
      i++; 
      itemInfo.image2 = arrEnabledImageIds[i]; 

      obj.add(itemInfo); 
     } 

     adapter = new MListAdapter(this, R.layout.row, obj); 
     lv.setAdapter(adapter); 

    } 
} 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

Item.java

public class Item implements Serializable { 

    public static final long serialVersionUID = 1L; 
    public int image1; 
    public int image2; 
} 

ряд.XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/ivLeft" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

    <ImageView 
     android:id="@+id/ivRight" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout> 

MListAdapter.java

public class MListAdapter extends ArrayAdapter<Object> { 

    private Context context; 
    int resId; 
    private ArrayList<Object> mAnimListItems; 

    public MListAdapter(Context context, int textViewResourceId, 
      ArrayList<Object> mAnimListItems) { 
     super(context, textViewResourceId, mAnimListItems); 
     this.resId = textViewResourceId; 
     this.context = context; 
     this.mAnimListItems = mAnimListItems; 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater mInflater = (LayoutInflater) context 
        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      convertView = mInflater.inflate(resId, null); 
     } 

     ImageView imgIconLeft = (ImageView) convertView 
       .findViewById(R.id.ivLeft); 
     ImageView imgIconRight = (ImageView) convertView 
       .findViewById(R.id.ivRight); 
     // TextView txtTitle = (TextView) convertView.findViewById(R.id.title); 

     Item item = (Item) mAnimListItems.get(position); 

     imgIconLeft.setImageResource(item.image1); 
     // if I do not do +1 here it sets same image to both left and right 
     // ImageView 
     imgIconRight.setImageResource(item.image2); 
     // txtTitle.setText(navDrawerItems.get(position).getTitle()); 

     return convertView; 
    } 
} 
+0

Это хороший ответ –

1

попытайтесь использовать два разных массива/arraylist, чтобы хранить изображения слева и справа. SetTag в л + положение для левого изображения SetTag как г + положение для правого изображения вы можете определить щелкнул изображение,

imgIconLeft.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
     if(v.getTag.toString().contains("l"){ 
     // then it's a left button. 

String position=v.getTag.toString().subString(1,v.getTag.toString().length()-1); 
// to get position 

} 
}); 
+0

или что вы могли бы предложить мне, сейчас я делаю это по-другому. Я сделал еще одно действие с scrollview и статически ставил каждое изображение в изображение, было бы лучше? –

+0

это тоже нормально, но я думаю, что выше путь проще :) –

+0

ОК спасибо, Но скажите, если я сделаю просмотр с прокруткой. Как я могу отправить то же изображение на другие виды деятельности. Imagenview –

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