2

レイアウト ファイルにリストビューとボタンがあります。そのボタンをクリックすると、リストビューに項目が追加されます。アクティビティが開始されたとき、リストビューは空である必要がありますが、アイテムを追加することで拡大する必要があります。これは onCreate() 内の私のコードです:

list  = (ListView)findViewById(R.id.inverterListView);
adapter = new ArrayAdapter<String>(InverterList.this, R.layout.inverters_list_row, R.id.inverterNumberTextViewInPanelListRow);
 list.setAdapter(adapter); 

ここでは、ボタンのクリックでリストビューに項目を追加しています。

adapter.add(inverterNo);
adapter.notifyDataSetChanged();

これはうまくいきます。カスタムリストビューアイテムを削除するように案内してもらえますか? 前もって感謝します。

4

7 に答える 7

7

アイテムの位置がわかっている場合は、次のことができます。

Object item = adapter.getItem(position);

adapter.remove(item);

adapter.notifyDataSetChanged();
于 2012-04-25T07:48:48.943 に答える
3

BaseAdapter を拡張する独自のアダプターを作成し、必要なすべてのメソッドを実装することができます。

それは私のアダプターの例です:

public class PeopleUserAdapter extends BaseAdapter 
{
private List<User> users;
private int viewResourceId;
private Context context;

public PeopleUserAdapter(Context context, int viewResourceId) 
{
    this.context = context;
    this.viewResourceId = viewResourceId;
    this.users = new ArrayList<User>();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) 
{
    UserItemHolder holder;
    if (convertView == null)
    {
        convertView = LayoutInflater.from(context).inflate(viewResourceId, parent, false);
        holder = new UserItemHolder(convertView);
    }
    else holder = (UserItemHolder) convertView.getTag();

    User user = getItem(position);
    holder.name.setText("@" + user.getLogin());
    return convertView;
}

@Override
public int getCount() 
{
    return users.size();
}

@Override
public User getItem(int position) 
{
    return users.get(position);
}

@Override
public long getItemId(int position) 
{
    return getItem(position).hashCode();
}

public void clear()
{
    users.clear();
}

public void addAll(Collection<User> users)
{
    this.users.addAll(users);
    notifyDataSetChanged();
}

public void replace(Collection<User> users)
{
    clear();
    addAll(users);
}

public static PeopleUserAdapter init(Context context)
{
    return new PeopleUserAdapter(context, R.layout.item_user);
}

}

于 2012-04-25T07:49:03.627 に答える
1

カスタム アダプタの remove メソッドをオーバーライドしたことを確認してください

たとえば、これが add メソッドの場合:

@Override
public void add(String[] object) {
    scoreList.add(object);
    super.add(object);
}

次に、削除メソッドは次のようになります。

@Override
public void remove(String[] object) {
    scoreList.remove(object);
    super.remove(object);
}
于 2015-12-16T10:02:49.913 に答える
1

adapter.remove(item) ..そして呼び出しますadapter.notifyDataSetChanged();

于 2012-04-25T07:48:35.807 に答える
0

簡単です; 必要なのは次のとおりです。パーソナライズアダプターにメソッド public を追加します。

public void remove(int position) {
    itemsMovieModelFiltered.remove(position);
    notifyDataSetChanged();
}

このメソッドは、パーソナライズ アダプターに追加する必要があります。次に、このメソッドを他のから呼び出します

 adapte=new PersonalizeListAdapter(getActivity().getApplicationContext(),
            movieModelList);
adapte.remove(position);
于 2020-03-17T16:15:11.760 に答える
0

以下の 2 行を呼び出します::

adapter.remove(inverterNo);
adapter.notifyDataSetChanged();

インバーター番号はあなたのアイテムです

于 2012-04-25T07:49:14.030 に答える