listview局部刷新
上面这个方式是用来获取需要修改的View
在通过点击item时的OnItemChickListener 来刷新listview的某一条
其余代码
package com.taisheng.fh.myapplication.ten_seven;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.taisheng.fh.myapplication.R;
import java.util.ArrayList;
import java.util.List;
public class Ten_Sevent_Activity extends AppCompatActivity {
private ListView listView ;
private List<MyListItemBean> lists ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ten__sevent_);
initData();
listView = (ListView) findViewById(R.id.listview);
final MyListAdapter adapter = new MyListAdapter(lists);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MyListItemBean listItemBean =
(MyListItemBean)parent.getItemAtPosition(position);//获得点击数据源
listItemBean.setName("updata name");//更改点击数据源
adapter .updataName(listItemBean,position);// 把参数出入方法进行局部改变
}
});
}
private void initData(){
lists = new ArrayList<>();
for (int i = 0; i < 20; i++) {
lists.add(new MyListItemBean("name"+i,""+i));
}
}
class MyListAdapter extends BaseAdapter{
private List<MyListItemBean> list;
public MyListAdapter(List<MyListItemBean> list) {
this.list = list;
}
@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;
}
public void updataName(MyListItemBean myListItemBean ,int position){
int visiblePosition = listView.getFirstVisiblePosition();
// 如添加headerview后 firstview就是hearderview
// 所有索引+1 取第一个view
// View view = listview.getChildAt(index - visiblePosition + 1);
// 获取点击的view
View views = listView.getChildAt(position - visiblePosition);
TextView v_text = (TextView) views.findViewById(R.id.item_text);
v_text.setText(myListItemBean.getName());
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder holder = null;
if (convertView==null) {
convertView = LayoutInflater.from(Ten_Sevent_Activity.this).inflate(R.layout.ten_seven_list_item_layout, null);
holder = new viewHolder();
holder.textView = (TextView)convertView.findViewById(R.id.item_text);
convertView.setTag(holder);
}else {
holder = (viewHolder) convertView.getTag();
}
MyListItemBean itemBean = list.get(position);
holder.textView.setText(itemBean.getName());
return convertView ;
}
class viewHolder{
TextView textView ;
}
}
class MyListItemBean{
private String name ;
private String position;
public MyListItemBean(String name, String position) {
this.name = name;
this.position = position;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
}
}