这个程序是有点小题大做。问题是这样的,我程序中没有给listView加上Onclicklistener监听啊,为什么运行后,我随意点击任何一个ListView的items时候都弹出footer呢?
看程序吧:
主程序:
package com.example.NotifyDataSetChangeDemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MyActivity extends Activity implements View.OnClickListener{ private Listlist; private ListView listView; private MyAdapter adapter; private Button loadBtn, loadMoreBtn,loadingBtn; private Handler handler; private LayoutInflater mInflater; private View footer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); loadBtn.setOnClickListener(this); loadMoreBtn.setOnClickListener(this); } private void initView() { loadBtn = (Button) findViewById(R.id.load); loadMoreBtn = (Button) findViewById(R.id.loadMore); loadingBtn = (Button) findViewById(R.id.loading); list = new ArrayList (); listView = (ListView) findViewById(R.id.listView); adapter = new MyAdapter(list, MyActivity.this); handler = new Handler(); mInflater = LayoutInflater.from(MyActivity.this); footer = mInflater.inflate(R.layout.footer, null); footer.setVisibility(View.GONE); listView.addFooterView(footer); } private void CreateDatas() { if (list.size()==0){ for (int i = 0; i < 10; i++) { Article article = new Article(); article.setTitle("I am a dog" + i); article.setContent("Yes,you are a big dog," + i); list.add(article); } }else { Toast.makeText(MyActivity.this,"You had loaded the original datas,please stop!",Toast.LENGTH_SHORT).show(); } } private void CreateMoreDatas() { int nowSize = list.size(); for (int i = nowSize; i < nowSize+5; i++) { Article article = new Article(); article.setTitle("I am new" + i); article.setContent("you are old man,guy," + i); list.add(article); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.load: CreateDatas(); listView.setAdapter(adapter); break; case R.id.loadMore: footer.setVisibility(View.VISIBLE); handler.postDelayed(new Runnable() { @Override public void run() { CreateMoreDatas(); adapter.notifyDataSetChanged(); listView.setAdapter(adapter); footer.setVisibility(View.GONE); } }, 3000); } } }
适配器:
package com.example.NotifyDataSetChangeDemo; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; public class MyAdapter extends BaseAdapter { private Listlist; private Context context; private LayoutInflater mInflater; public MyAdapter(List list, Context context) { this.list = list; this.context = context; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView==null){ convertView = mInflater.inflate(R.layout.items, null); holder = new ViewHolder(convertView); holder.title = (TextView) convertView.findViewById(R.id.title); holder.content = (TextView) convertView.findViewById(R.id.content); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.title.setText(list.get(position).getTitle()); holder.content.setText(list.get(position).getContent()); return convertView; } } class ViewHolder{ View view; TextView title; TextView content; public ViewHolder(View view) { this.view = view; } }
main.xml
footer.xml
items.xml
我想这都不用细看就知道你所贴的代码不会出现你说的情况,改了代码就把出问题的代码老老实实贴上来再讨论吧,实事求是。
系统问题,原来用CM的系统,换个原装就没问题。搞乌龙了