0

画面Aにリストビューがあります。ユーザーがリスト内のアイテムの1つをクリックすると、次の画面に移動し、選択されたアイテムの詳細を確認できます。

ユーザーは画面Bでその項目を変更できます。1つは、ユーザーが画面Aに戻ったときに変更が行われ、そのリストを更新する必要があります。

私が使用したリストは静的なものです。

私が使用したコードは次のとおりです。

ArrayList<ItemDetails> image_details = GetSearchResults();

    final ListView lv1 = (ListView) findViewById(R.id.listV_main);
    lv1.setAdapter(new ItemListBaseAdapter(this, image_details));

    lv1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
            Object o = lv1.getItemAtPosition(position);
            ItemDetails obj_itemDetails = (ItemDetails)o;
            Intent i = new Intent(DemoPastSubstitutions.this,DemoPastSubstitutionsDetail.class);
            i.putExtra("substitutesName", obj_itemDetails.getName());
            i.putExtra("positionCompany", obj_itemDetails.getDesignation());
            i.putExtra("phone", obj_itemDetails.getphone());
            i.putExtra("email", obj_itemDetails.getEmail());
            i.putExtra("Date", obj_itemDetails.getDates());
            i.putExtra("imageNo", obj_itemDetails.getImageNumber());
            startActivity(i);
                }  
    });
}
private ArrayList<ItemDetails> GetSearchResults(){
    ArrayList<ItemDetails> results = new ArrayList<ItemDetails>();
    ItemDetails item_details = new ItemDetails();

        item_details.setName("Diesel Dean");
        item_details.setDates("From 02/19/2013 - 04/03/2013");
        item_details.setDesignation("Manager");
        item_details.setphone("+9164589022");
        item_details.setEmail("diesel.dean@sap.com");
        item_details.setImageNumber(1);

        item_details = new ItemDetails();
        item_details.setName("Kate Hudson");
        item_details.setDates("From 01/23/2013 - 02/15/2013");
        item_details.setDesignation("Manager");
        item_details.setphone("+916458902");
        item_details.setEmail("kate.hudson@sap.com");
        item_details.setImageNumber(2);
        results.add(item_details);

        item_details = new ItemDetails();
        item_details.setName("Kevin James");
        item_details.setDates("From 01/01/2013 - 01/02/2013");
        item_details.setDesignation("Manager");
        item_details.setphone("+9164589023");
        item_details.setEmail("kevin.james@sap.com");
        item_details.setImageNumber(3);
        results.add(item_details);

        item_details = new ItemDetails();
        item_details.setName("Gray Cruz");
        item_details.setDates("From 01/10/2013 - 01/20/2013");
        item_details.setDesignation("Manager");
        item_details.setphone("+9164589025");
        item_details.setEmail("gray.cruz@sap.com");
        item_details.setImageNumber(4);
        results.add(item_details);
            return results;
}

基本アダプターコード:private static ArrayList itemDetailsrrayList;

private Integer[] imgid = {
        R.drawable.p1,
        R.drawable.bb2,
        R.drawable.p2,
        R.drawable.bb5,
        R.drawable.bb6,
        R.drawable.d1
        };

private LayoutInflater l_Inflater;

public ItemListBaseAdapter(Context context, ArrayList<ItemDetails> results) {
    itemDetailsrrayList = results;
    l_Inflater = LayoutInflater.from(context);
}

public int getCount() {
    return itemDetailsrrayList.size();
}

public Object getItem(int position) {
    return itemDetailsrrayList.get(position);
}

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

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.item_details_view, null);
        holder = new ViewHolder();
        holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
        holder.txt_itemDescription = (TextView) convertView.findViewById(R.id.itemDescription);
        //holder.txt_itemPrice = (TextView) convertView.findViewById(R.id.price);
        holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.txt_itemName.setText(itemDetailsrrayList.get(position).getName());
    holder.txt_itemDescription.setText(itemDetailsrrayList.get(position).getDates());
    holder.itemImage.setImageResource(imgid[itemDetailsrrayList.get(position).getImageNumber() - 1]);


    return convertView;
}

static class ViewHolder {
    TextView txt_itemName;
    TextView txt_itemDescription;
    //TextView txt_itemPrice;
    ImageView itemImage;
}
4

2 に答える 2

0

'details'アクティビティを開始するときは、startActivityForResult()を使用する必要があります。

詳細を説明するここでの答えをチェックしてください:Androidで `startActivityForResult`を管理する方法は?

于 2013-02-08T23:39:13.750 に答える
0
  • startActivity()の代わりにstartActivityForResult()を使用し、画面AでonActivityResult()をオーバーライドします
  • アイテムインデックスを他のデータと一緒に画面Bに渡します
  • 画面Bで変更したら、すべてのデータをインデックスと一緒に送り返し、バンドルを介して画面Aに戻します(画面Bのアクティビティを終了する前にsetResult()を使用します)。
  • 画面Bを終了すると、onActivityResult()にコールバックがあり、データを抽出してリストを更新できます。
  • リスト内のデータを更新した後、ListAdapter.notifyDataSetChanged();を呼び出すことを忘れないでください。
  • 静的リストを使用するため、データをやり取りする必要があることに注意してください
于 2013-02-08T23:42:18.450 に答える