Search code examples
javaandroidandroid-activity

how to create one activity with changing data?


I have a listView, and each item in this listview should lead to an activity , all those activities have the same structure i wannna change just the text and pictures for each one ! is there anyway to do that?

public class SaladsActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_products);
    ArrayList<Product> prod= new ArrayList<Product>();

    prod.add(new Product(R.drawable.sa1,"Mini Salad","1.5 $","more"));
    prod.add(new Product(R.drawable.sa2,"Salade Pêcheur","1.5 $","more"));
    prod.add(new Product(R.drawable.sa3,"Salade Italienne","1.5 $","more"));
    prod.add(new Product(R.drawable.sa4,"Salade César","1.5 $","more"));



    TypeProducts itemsAdapter = new TypeProducts(this,  prod);

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

    listView.setAdapter(itemsAdapter);

    list.setAdapter(itemsAdapter);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if(position==0){
                Intent prod = new Intent(ProductsActivity.this, A.class);
                startActivity(prod);
            }
            if(position==1){
                Intent prod = newIntent(ProductsActivity.this,B.class);
                startActivity(prod);
            }
            if(position==2){

                Intent prod = new Intent(ProductsActivity.this, C.class);
                startActivity(prod);
            }
            if(position==3){
                Intent prod = new Intent(ProductsActivity.this, D.class);
                startActivity(prod);
            }
    });

}
}

I dont wanna create A,B,C,D Activities i wanna create just one but it will depend on each item!


Solution

  • Using Intent you can do this. Like Following:

    
            listview=(ListView) findViewById(R.id.list_view);
    
            listViewArrayAdapter=new ListViewArrayAdapter(this,listviewArrayList);// set data for your arraylist (listviewArrayList) before using it here
            listview.setAdapter(listViewArrayAdapter);
    
    
            listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
                    Bundle bundle = new Bundle();
                    bundle.putString("yourTextId",listviewArrayList.get(position).getYourText);
                    bundle.putInt("dataImg", listviewArrayList.get(position).getImageId());
    
    
                    Intent intent = new Intent(MainActivity.this, SeconActivity.class);
                    intent.putExtras(bundle);
                    startActivity(intent);
    
                }
            });
    
    

    And inside SecondActivity something like this.

    String text = getIntent().getExtras().getString("yourTextId");
    int imageId = getIntent().getExtras().getInt("dataImg");