0

ページにリスト ビューがあり、ListView 内でボタンをクリックすると、新しいデータ セットでページをリロードします。

package com.examples.listzones;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MyActivity extends Activity implements
    AdapterView.OnItemClickListener, View.OnClickListener {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ListView list = new ListView(this);
    setContentView(list);

    String[] items = { "Tom", "Sally", "Bill", "John", "Santiago", "Isabella" };

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        R.layout.review, R.id.textView1, items) {
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);

        View text = row.findViewById(R.id.seemore);
        text.setTag(position);
        text.setOnClickListener(MyActivity.this);

        return row;
      }
    };

    list.setAdapter(adapter);
    list.setOnItemClickListener(this);
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {

    case R.id.seemore:

      // RELOAD THE PAGE WITH NEW SET OF DATA

      break;
    default:
      break;
    }
  }

  @Override
  public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    Toast.makeText(this, "Item Click " + position, Toast.LENGTH_SHORT).show();
  }
}

OnClick 内で、ページに新しいデータセットをロードしたいと考えています。

4

4 に答える 4

2

アクティビティを再起動する必要はありません。新しいデータをアダプターに入れ、データセットが変更されたことをアダプターに通知できます。

adapter.clear();
adapter.addAll("new 1"," new 2","new 3");
adapter.notifyDataSetChanged();
于 2013-07-10T12:53:54.693 に答える
0

初期化を onCreate() メソッドから専用のメソッド、たとえば init() に移動して、onItemClick() から呼び出すことができます。

または、ListView アダプターの notifyDataSetChanged() メソッドを使用することもできます。

于 2013-07-10T12:52:18.367 に答える