Android 如何动态控制gridview特殊项的视图
我想在gridview项目中控制(删除(使其消失)、添加(使其可见)、设置数据)视图,例如,当用户点击gridview项目中的下载按钮时,网格项目的progressBar在完成下载后运行其进度;dowload按钮消失,open按钮变为可见,可能还有更多操作,如更改delete按钮的背景,在点击下载按钮后匹配我的代码,我的订单正常运行,但当用户浏览gridview时,一些项目会得到与我订购的最后一个网格项目类似的效果[Visibling open button等]我在网格中看到了一些相同的项目,有人能帮我解决这个问题吗?或者提供使用recyclerview替代 这是我的适配器类Android 如何动态控制gridview特殊项的视图,android,gridview,customization,Android,Gridview,Customization,我想在gridview项目中控制(删除(使其消失)、添加(使其可见)、设置数据)视图,例如,当用户点击gridview项目中的下载按钮时,网格项目的progressBar在完成下载后运行其进度;dowload按钮消失,open按钮变为可见,可能还有更多操作,如更改delete按钮的背景,在点击下载按钮后匹配我的代码,我的订单正常运行,但当用户浏览gridview时,一些项目会得到与我订购的最后一个网格项目类似的效果[Visibling open button等]我在网格中看到了一些相同的项目,有
public class CustomGrid extends BaseAdapter{
private Context mContext;
private final String[] web;
private final int[] Imageid;
public CustomGrid(Context c,String[] web,int[] Imageid ) {
mContext = c;
this.Imageid = Imageid;
this.web = web;
}
@Override
public int getCount() {
return web.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View grid;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.grid_single,parent,false);
} else {
grid = convertView;
}
final ProgressBar downloadPb =(ProgressBar)grid.findViewById(R.id.single_gride_progressBar);
final Button downloadBtn = (Button) grid.findViewById(R.id.grid_single_download_btn);
final Button openBtn = (Button) grid.findViewById(R.id.grid_single_open_btn);
final Button deleteBtn = (Button) grid.findViewById(R.id.grid_single_delete_btn);
downloadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new CountDownTimer(5000,1){ //simulating download progress
@Override
public void onTick(long millisUntilFinished) {
if(millisUntilFinished<=500){
downloadPb.setProgress(100);
}else if(millisUntilFinished<=1000){
downloadPb.setProgress(80);
}else if(millisUntilFinished<=2000){
downloadPb.setProgress(60);
}else if(millisUntilFinished<=3000){
downloadPb.setProgress(40);
}else if(millisUntilFinished<=4000){
downloadPb.setProgress(20);
}
}
@Override
public void onFinish(){
downloadBtn.setVisibility(View.GONE);
openBtn.setVisibility(View.VISIBLE);
deleteBtn.setBackgroundResource(R.drawable.delete_selector);
}
}.start();
}
});
TextView textView = (TextView) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image);
textView.setText(web[position]);
imageView.setImageResource(Imageid[position]);
return grid;
}
}
公共类CustomGrid扩展BaseAdapter{
私有上下文;
私有最终字符串[]web;
私有最终int[]Imageid;
公共CustomGrid(上下文c,字符串[]web,int[]图像ID){
mContext=c;
this.Imageid=Imageid;
this.web=web;
}
@凌驾
public int getCount(){
返回web.length;
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图网格;
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u充气器\u服务);
网格=充气机。充气(R.布局。网格\u单个,父,假);
}否则{
网格=转换视图;
}
最终ProgressBar下载PB=(ProgressBar)grid.findViewById(R.id.single\u grid\u ProgressBar);
final Button downloadBtn=(Button)grid.findviewbyd(R.id.grid\u single\u download\u btn);
final Button openBtn=(Button)grid.findviewbyd(R.id.grid\u single\u open\u btn);
final Button deleteBtn=(Button)grid.findviewbyd(R.id.grid\u single\u delete\u btn);
downloadBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
新的倒计时(5000,1){//模拟下载进度
@凌驾
公共void onTick(长毫秒未完成){
如果你对编程语言中的语法有一定的了解,为什么不懂英语呢?我只想为我糟糕的英语说声抱歉
public class Main2Activity extends Activity {
String[] mArrayNames = {"english","italic","germany","french","russina","persian","indian","arabic","spanish","latin",};
int[] mArrayPics = { R.drawable.c118_1 , R.drawable.c104 , R.drawable.c115_2 , R.drawable.c117 , R.drawable.c613_8 , R.drawable.c103 , R.drawable.c103_1 , R.drawable.c114_1 , R.drawable.c613_7 , R.drawable.r155};
GridView grid ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
CustomGrid adapter = new CustomGrid(Main2Activity.this, mArrayNames, mArrayPics);
grid = (GridView)findViewById(R.id.gridView45);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View view,int position, long id) {
}
});
}
}