Android:ドロップダウン・リフレッシュ+追加ロード+スライド削除の例説明

13890 ワード

皆さんはタオバオをぶらぶらしたり、いろいろなアプリを見たりして、このような機能を見ることができます.ドロップダウンのリフレッシュとロードの増加、スライドの削除、リフレッシュとは、ブラシを洗ってから新しくすることです.古いものを突破して新しいものを創造することを意味します.例えば、携帯電話でニュースを閲覧するとき、ドロップダウンのリフレッシュ機能を使って、私たちは最初に最新のニュースを把握することができます.ロードの増加は何ですか.简単に言えば、ホームページの上で宝を洗う时、私达は次のページをクリックして私达のもっと多くの需要を満たすことができて、しかし携帯电话の端で异なって、上下のページがなくて、どのようにnieをして、方法はいつも困难より多くて、注意深い友达は発见することができて、携帯电话の端の中で、もっと多くのロードが私达の要求を満たすことができて、実はもっと多くのロードもページの1种の体现です.小伙伴在手机版QQ的时候,情报インタフェースには多くの情报があります.もしあなたも小编のように强迫症があれば、见终わった情报を削除したいと思っています.どうすればいいですか.今日のブログでは、主に友达とドロップダウンの更新とロードのより多くのスライド削除を共有し、必要な友达を助けることができることを望んでいます.また、友达によろしくお愿いします.
まずxmlの内容を書く必要がありますactivityと名付けましたitem、具体的なコードは以下の通りです.
XML/HTMLコード

 
 
   
 


次にlist_を作成しますitemにはxmlに関するコードがあります.具体的なコードは以下の通りです.
XML/HTMLコード

 
 
   
 
   
 
      
 
     
   
 
 

第三に、mainのxmlファイルを作成します.具体的なコードは以下の通りです.
XML/HTMLコード

 
 
   
 
   
   
 
 

ステップ4ではxlistview_を作成しますfooterのxmlファイルの具体的なコードは以下の通りです.
XML/HTMLコード

 
 
   
 
     
 
     
   
 


ステップ5ではxlistviewを作成しますヘッダーのxmlファイル、具体的なコードは以下の通りです.
XML/HTMLコード

 
 
   
 
     
 
       
 
       
 
         
 
         
       
     
 
     
 
     
   
 
 

これで、レイアウトxmlファイルのコードについて書き終わりました.次に、javaクラスのコードを書き始めました.まず、ItemActivityのコードを書きます.具体的なコードは以下の通りです.
Javaコード

import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.TextView; 
 
public class ItemActivity extends Activity implements OnTouchListener { 
 
  private float x, upx; 
 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_item); 
    init(); 
  } 
 
  private void init() { 
    findViewById(R.id.ll_parent).setOnTouchListener(this); 
    ((TextView) findViewById(R.id.tv_text)).setText(getIntent().getStringExtra("item")); 
  } 
 
  public boolean onTouch(View v, MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      x = event.getX(); 
    } 
    if (event.getAction() == MotionEvent.ACTION_UP) { 
      upx = event.getX(); 
      if (Math.abs(x - upx) > 20) { 
        this.finish(); 
        overridePendingTransition(0, R.anim.slide_out_to_right); 
      } 
    } 
    return true; 
  } 
 
} 

次に、アダプタadapterのコードを作成します.具体的なコードは以下の通りです.
Javaコード

import java.util.ArrayList; 
 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 
 
public class ItemAdapter extends BaseAdapter { 
 
  private LayoutInflater inflater; 
  private ArrayList datas; 
 
  public ItemAdapter(Context context) { 
    inflater = LayoutInflater.from(context); 
  } 
 
  public void setData(ArrayList datas) { 
    this.datas = datas; 
  } 
 
  public int getCount() { 
    return datas.size(); 
  } 
 
  public Object getItem(int position) { 
    return datas.get(position); 
  } 
 
  public long getItemId(int position) { 
    return position; 
  } 
 
  public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 
    if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.list_item, null); 
      holder.coating = (TextView) convertView.findViewById(R.id.tv_coating); 
      holder.functions = (TextView) convertView.findViewById(R.id.tv_functions); 
      holder.list_item_textview=(TextView) convertView.findViewById(R.id.list_item_textview); 
      convertView.setTag(holder); 
    } else { 
      holder = (ViewHolder) convertView.getTag(); 
    } 
     
    holder.list_item_textview.setText(datas.get(position)); 
 
    holder.coating.setVisibility(View.VISIBLE); 
     
    holder.functions.setClickable(false); 
     
    return convertView; 
  } 
 
  public final class ViewHolder { 
    public TextView coating; 
    public TextView functions; 
    public TextView list_item_textview; 
  } 
} 

最後に、XListViewActivityのコードを作成します.具体的なコードは以下の通りです.
Javaコード

import java.util.ArrayList; 
 
import me.maxwin.view.XListView; 
import me.maxwin.view.XListView.IXListViewListener; 
import me.maxwin.view.XListView.RemoveListener; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
 
public class XListViewActivity extends Activity implements IXListViewListener ,RemoveListener,OnItemClickListener{ 
  private XListView mListView; 
// private ArrayAdapter mAdapter; 
  private ItemAdapter adapter; 
// private Context context; 
  private ArrayList items = new ArrayList(); 
  private Handler mHandler; 
  private int start = 0; 
  private static int refreshCnt = 0; 
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    geneItems(); 
    init(); 
     
    mHandler = new Handler(); 
  } 
   
  private void init() { 
    // TODO Auto-generated method stub 
    mListView = (XListView) findViewById(R.id.xListView); 
    mListView.setPullLoadEnable(true); 
    mListView.setRemoveListener(this); 
    mListView.setOnItemClickListener(this); 
//   mListView.setPullLoadEnable(false); 
//   mListView.setPullRefreshEnable(false); 
    mListView.setXListViewListener(this); 
    adapter=new ItemAdapter(this); 
    adapter.setData(items); 
    mListView.setAdapter(adapter); 
 
  } 
   
   
  private void geneItems() { 
    for (int i = 0; i != 20; ++i) { 
      items.add("refresh cnt " + (++start)); 
    } 
  } 
 
  private void onLoad() { 
    mListView.stopRefresh(); 
    mListView.stopLoadMore(); 
    mListView.setRefreshTime("  "); 
  } 
   
  @Override 
  public void onRefresh() { 
    mHandler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
        start = ++refreshCnt; 
        items.clear(); 
        geneItems(); 
        // mAdapter.notifyDataSetChanged(); 
        adapter=new ItemAdapter(XListViewActivity.this); 
        adapter.setData(items); 
        mListView.setAdapter(adapter); 
        onLoad(); 
      } 
    }, 2000); 
  } 
 
  @Override 
  public void onLoadMore() { 
    mHandler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
        geneItems(); 
        adapter.notifyDataSetChanged(); 
        onLoad(); 
      } 
    }, 2000); 
  } 
   
  @Override 
  public void removeItem(int position) { 
    // TODO Auto-generated method stub 
    mListView.isSlide = false; 
    mListView.itemView.findViewById(R.id.tv_coating).setVisibility(View.VISIBLE); 
    items.remove(position); 
    adapter.notifyDataSetChanged(); 
     
  } 
 
 
  @Override 
  public void onItemClick(AdapterView> parent, View view, int position, 
      long id) { 
    // TODO Auto-generated method stub 
    Intent intent = new Intent(getApplicationContext(), ItemActivity.class); 
    intent.putExtra("item", items.get(position)); 
    startActivity(intent); 
    overridePendingTransition(R.anim.slide_in_from_right, R.anim.remain_original_location); 
     
  } 
 
} 

以上、Androidでドロップダウン・リフレッシュとロード、スライド削除を実現した知識整理を行いました.