Android ListView動態重新整理某項Item

來源:互聯網
上載者:User

標籤:android l   last   nta   width   data   建立   update   apk   xtend   

使用ViewHolder來重新整理某項資料,而不用每次都全部重新整理資料。

繼承BaseAdapter,建立ViewHolder類。

public class TestListAdapter extends BaseAdapter {    private Context mContext;    private List<String> strList;    public TestListAdapter(Context context, List<String> list) {        super();        this.mContext = context;        this.strList = list;    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return strList.size();    }    @Override    public Object getItem(int position) {        // TODO Auto-generated method stub        return position;    }    @Override    public long getItemId(int position) {        // TODO Auto-generated method stub        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        // TODO Auto-generated method stub        ViewHolder holder = null;        if (null == convertView) {            convertView = LayoutInflater.from(mContext).inflate(R.layout.line, null);            holder = new ViewHolder();            holder.iDText = (TextView) convertView.findViewById(R.id.textView_id);            holder.strText = (TextView) convertView.findViewById(R.id.textView_str);            convertView.setTag(holder);        } else {            holder = (ViewHolder) convertView.getTag();        }        holder.iDText.setText(position + "");        String str = strList.get(position);        holder.strText.setText(str);        return convertView;    }    private static class ViewHolder {        private TextView iDText;        private TextView strText;    }    public void updataView(int posi, ListView listView) {        int visibleFirstPosi = listView.getFirstVisiblePosition();        int visibleLastPosi = listView.getLastVisiblePosition();        if (posi >= visibleFirstPosi && posi <= visibleLastPosi) {            View view = listView.getChildAt(posi - visibleFirstPosi);            ViewHolder holder = (ViewHolder) view.getTag();            String txt = holder.strText.getText().toString();            txt = txt + "++;";            holder.strText.setText(txt);            strList.set(posi, txt);        } else {            String txt = strList.get(posi);            txt = txt + "++;";            strList.set(posi, txt);        }    }}

在Activity中,調用updateView()方法,重新整理資料。

public class MainActivity extends Activity {    private MainActivity mContext;    private EditText idEdit;    private TextView textView;    private List<String> strList = new ArrayList<String>();    private ListView listView;    private TestListAdapter ListAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mContext = this;        for (int i = 0; i < 100; i++) {            strList.add("test data");        }        idEdit = (EditText) findViewById(R.id.edittext_id);        textView = (TextView) findViewById(R.id.textview_modify);        listView = (ListView) findViewById(R.id.listview);        ListAdapter = new TestListAdapter(mContext, strList);        listView.setAdapter(ListAdapter);        //動態重新整理        textView.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                String idStr = idEdit.getText().toString();                int idInt = Integer.parseInt(idStr);                ListAdapter.updataView(idInt, listView);//動態修改            }        });    }}

給出布局檔案:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#FFFFFF"    android:orientation="vertical" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="40dp"        android:orientation="horizontal" >        <EditText            android:id="@+id/edittext_id"            android:layout_width="200dp"            android:layout_height="wrap_content"            android:hint="put modify id" />        <TextView            android:id="@+id/textview_modify"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="動態修改"            android:textColor="#123456" />    </LinearLayout>    <ListView        android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="wrap_content" >    </ListView></LinearLayout>

 

Android ListView動態重新整理某項Item

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.