Как создать одно действие с изменением данных? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть listView, и каждый элемент в этом listview должен приводить к действию, все эти действия имеют одинаковую структуру, я хочу изменить только текст и изображения для каждого из них! Есть ли в любом случае, чтобы сделать это?

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);
            }
    });

}
}

Я не хочу создавать A, B, C, D Действия Я хочу создать только один, но это будет зависеть от каждого элемента!

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Используйте Intent для передачи данных из одного Activity в другой:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("key", "some data for this key");
startActivity(intent);

И затем, чтобы получить эти данные обратно, используйте метод getIntent().getExtras().getString(...) в SecondActivity:

String data = getIntent().getExtras().getString("key");

Таким образом, окончательный код может быть:

ListView listView = findViewById(R.id.list_view_id);
listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
            String selectedText = lv.getItemAtPosition(position).toString();
            // pass selectedText to Intent
            ...
        }
});

А затем получить его в SecondActivity и обработать каким-либо образом (например, изменить текст в зависимости от выбранного элемента).

0 голосов
/ 07 ноября 2019

Используя Intent, вы можете сделать это. Как следует:


        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);

            }
        });

А внутри SecondActivity что-то вроде этого.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...