0

こんにちは皆さん、私はこのチャット画面を作成します。最初に sqllite からデータを取得し、ボタンをクリックすると、SQL lite にデータを追加し、画面にも動的に表示されます...

すべての作品データが sqllite に挿入されるようになりましたが、リストには表示されません。

ベースアダプターを使用したアクティビティは..

public class Chat_Home extends Activity implements OnClickListener {

MsgDataSource source;
EditText editText;
AnimalAdapter adapter;
ListView listView;
List<Msgs> list;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(this);
    editText = (EditText) findViewById(R.id.editText1);
    listView = (ListView) findViewById(R.id.list);
    source = new MsgDataSource(getApplicationContext());
    list = new ArrayList<Msgs>();

    list = source.getAnimals();//get all msgs  from sql lite and save it to list
    adapter = new AnimalAdapter(list);
    listView.setAdapter(adapter);
}


public class AnimalAdapter extends BaseAdapter {
    final List<Row> rows;
    List<Msgs> list=new ArrayList<Msgs>();

    public void add(Msgs msgs) {
        // TODO Auto-generated method stub
        Log.e("pmmmmm",""+list.size());
        list.add(msgs);
        Log.e("pmmmmm",""+list.size());
        notifyDataSetChanged();

    }
    public AnimalAdapter(List<Msgs> msgs) {
        // TODO Auto-generated constructor stub
        list.addAll(msgs);
        rows = new ArrayList<Row>();

        String type;
        for (Msgs msg : list) {
            Log.e("String", msg.get_sender());
            type = msg.get_sender();
            if (type.equalsIgnoreCase("me")) {
                rows.add(new Send_Row(LayoutInflater.from(Chat_Home.this),
                        msg));
            } else {
                rows.add(new Reciv_row(
                        LayoutInflater.from(Chat_Home.this), msg));
            }

        }
    }

    @Override
    public int getViewTypeCount() {
        return RowType.values().length;
    }

    @Override
    public int getItemViewType(int position) {
        return rows.get(position).getViewType();
    }

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

    public Object getItem(int position) {
        return position;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        return rows.get(position).getView(convertView);
    }


}

@SuppressLint("NewApi")
@Override
public void onClick(View arg0) {

    String msg;
    msg = editText.getEditableText().toString();
    source.addmsg(msg, "text", 888888, "me", 0);
    adapter.add(new Msgs(msg, "text", 888888, "me", 0));
    editText.setText("");
}

追加メソッドが呼び出されたときにアイテムがリストに追加されます.. plz help.. 事前に感謝します...

4

2 に答える 2

0

onClick メソッドでこのようにします..

list.add(your new object);

それを追加した後、呼び出してarraylist更新しますlistview

adapter.notifyDataSetChanged();
于 2013-11-04T06:11:57.653 に答える
0

あなたを変更し、 final List<Row> rows to public List<Row>notifyDataSetChanged の後にこのコレクションの項目を追加します

于 2013-11-04T06:12:38.843 に答える