2016-03-02 3 views
0

Я хочу создать ListView, элементы которого во втором действии открывают разные снимки (когда они выбраны).Добавление активности в ListView

Я сделал некоторые из них, но не мог понять, как писать коды для отображения разных изображений во втором действии.

Любая помощь приветствуется.

Вот что я сделал до сих пор:

MainActivity.java

public class MainActivity extends AppCompatActivity { 

ListView listView; 

String[] country = { 

     "India", 
     "France", 
     "Germany", 
     "Japan", 
     "The US", 
     "Spain", 
     "Brazil", 
     "Korea" 
}; 

Integer[] countryFlag = { 

     R.drawable.pic1, 
     R.drawable.pic2, 
     R.drawable.pic3, 
     R.drawable.pic4, 
     R.drawable.pic5, 
     R.drawable.pic6, 
     R.drawable.pic7, 
     R.drawable.pic8, 
}; 

@Override 
protected void onCreate(Bundle SavedInstanceState) { 

    super.onCreate(SavedInstanceState); 

    setContentView(R.layout.activity_main); 


    listView = (ListView) findViewById(R.id.listView); 

    CustomListAdapter adapter = new CustomListAdapter(this, country, countryFlag); 

    listView.setAdapter(adapter); 

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



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

      intent.putExtra("position", position); 
      intent.putExtra("country", country); 
      intent.putExtra("countryFlag", countryFlag); 

      startActivity(intent); 

     } 
    }); 

} 
} 

CustomListAdapter.java

public class CustomListAdapter extends ArrayAdapter<String> { 

Activity context; 
String[] country; 
Integer[] countryFlag; 

static class ViewHolder{ 
    public ImageView img; 
    public TextView txt; 
} 

public CustomListAdapter(Activity context, String[] country, Integer[] countryFlag) { 
    super(context, R.layout.second_layout, country); 

    this.context=context; 
    this.country=country; 
    this.countryFlag=countryFlag; 
} 

public View getView (int position, View view, ViewGroup parent) { 
    View row = view; 

    if (row == null) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     row = inflater.inflate(R.layout.second_layout, parent, false); 

     ViewHolder viewHolder = new ViewHolder(); 

     viewHolder.img = (ImageView) row.findViewById(R.id.img); 
     viewHolder.txt = (TextView) row.findViewById(R.id.txt); 

     row.setTag(viewHolder); 
    } 

    ViewHolder holder = (ViewHolder) row.getTag(); 

    holder.txt.setText("The country of " + country[position]); 
    holder.img.setImageResource(countryFlag [position]); 

    return row; 
} 
} 

NextScreen.java

общественного класса NextScreen расширяет активность {

String[] position; 
String[] country; 
int countryFlag; 


@Override 
protected void onCreate(Bundle SavedInstanceState) { 

    super.onCreate(SavedInstanceState); 

    setContentView(R.layout.third_layout); 

    Intent intent = getIntent(); 

    position = intent.getStringArrayExtra("position"); 
    country = intent.getStringArrayExtra("country"); 
    countryFlag = intent.getExtras().getInt("countryFlag"); 

} 
} 
+0

[Не по теме] вы можете упростить отображение изображений. Вместо создания нового действия вы можете создать простой диалог «setContentView» с завышенным представлением и добавить ресурсы к этому представлению и просто показать его. – PedroHawk

ответ

1

Способ, которым вы проходите, и получение дополнительных услуг в намерении неверно. Вы что-то проходите и читаете что-то еще.

String[] country; 
int[] countryFlag; 
int position; 


@Override 
protected void onCreate(Bundle SavedInstanceState) { 

    super.onCreate(SavedInstanceState); 

    setContentView(R.layout.third_layout); 
    //assuming you have an image view in the layout with id flag 
    ImageView flagImage = (ImageView)findViewById(R.id.flag); 
    Intent intent = getIntent(); 

    country = intent.getStringArrayExtra("country"); 
    countryFlag = intent.getIntArrayExtra("countryFlag"); 
    position = intent.getExtras().getInt("position"); 
    int imageID = countryFlag[position]; 
    //now you can use this imageId to set on a imageView 
    flagImage.setImageResource(imageID); 
} 
+0

Равжит Сингх, спасибо за исправление! Я новичок, не могли бы вы показать мне пример? – Ehsan

+0

отредактировал мой ответ, приветствует –

+0

принимает ответ, если он работает. Thankx! –

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