簡體   English   中英

通過自定義適配器的意圖通過android中的項目將數據從一個活動發送到另一個活動/片段

[英]send data from one activity to another activity / fragment via Intents through Custom Adapter for List items in android

我是一名初學者android程序員,我正在制作一個餐廳應用程序,其中包含“一個活動”中特許經營城市的微調器,如果用戶從微調器中選擇了一個城市,然后單擊按鈕,它將顯示以下城市中所選城市的餐館列表另一個活動/片段。 如何通過自定義適配器實現此目標?

答案包括兩部分:-

  1. 從第一個活動的微調器中獲取選定的城市ID,然后將其發送到第二個活動中。 對於這一部分,您可以參考@Chaitanya的答案以使用intent在兩個活動之間傳遞信息。

  2. 這部分是關於如何使用選定的城市值。 關於您的問題,您必須獲取基於該城市的餐廳列表,並將其放在列表視圖或回收視圖中。 您必須編寫適當的代碼,才能從數據庫或Web服務獲取基於城市的餐廳列表。 之后,只需將List傳遞到此處(在實現listview的第二個活動中):

     ListView yourListView = (ListView) findViewById(R.id.itemListView); ListAdapter customAdapter = new ListAdapter(this, R.layout.itemlistrow, <<restaurantList>>); yourListView .setAdapter(customAdapter); 

樣品適配器

public class ListAdapter extends ArrayAdapter<Item> {

public ListAdapter(Context context, int textViewResourceId) {
    super(context, textViewResourceId);
}

public ListAdapter(Context context, int resource, List<Item> items) {
    super(context, resource, items);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v = convertView;

    if (v == null) {
        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
        v = vi.inflate(R.layout.itemlistrow, null);
    }

    Item p = getItem(position);

    if (p != null) {
        TextView tt1 = (TextView) v.findViewById(R.id.id);
        TextView tt2 = (TextView) v.findViewById(R.id.categoryId);
        TextView tt3 = (TextView) v.findViewById(R.id.description);

        if (tt1 != null) {
            tt1.setText(p.getId());
        }

        if (tt2 != null) {
            tt2.setText(p.getCategory().getId());
        }

        if (tt3 != null) {
            tt3.setText(p.getDescription());
        }
    }

    return v;
}

}

這是我在項目中使用的一門課。 您需要收藏要顯示的商品,在您的情況下是餐廳。 您需要重寫View getView(int position,View convertView,ViewGroup parent)方法。

為此,請執行以下操作:

第一步:當用戶點擊“確定”按鈕時

okButton.setOnClickListener(new View.OnClickListener) {

@Override
public void onClick(View v) {
String selectedValue = spinner.getSelectedItem();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("selectedCity", selectedValue);
startActivity(intent);
}
});

步驟2:現在進入secondActivity oncreate()

@Override

public void onCreate(Bundle s) {
setContentView(R.layout.b);

Intent intent = getIntent();
if(intent != null) {
intent.getStringExtra("selectedCity");
}
}

而已!!! 全部做完..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM