无法在android中操作ListView中的列表项

无法在android中操作ListView中的列表项,listview,android-arrayadapter,listitem,Listview,Android Arrayadapter,Listitem,我希望listView中的功能是: 1) 我想动态显示项目(由我完成) 2) 然后我想对每个列表项运行倒计时(1分钟)并显示 在文本中对每个项目进行不同的倒计时(由我完成),并在时间到期后从listView中删除该项目 3) 然后我需要在点击任何项目时显示对话框(有两个选项,接受和拒绝) 4) 然后,如果用户选择接受(从对话框),我想在文本视图中显示“已接受” 5) 或者,如果用户选择拒绝,我想在文本视图中显示“拒绝”,然后在1分钟后从列表中删除该项目(即显示拒绝的项目最多1分钟) 公共类Mai

我希望listView中的功能是:

1) 我想动态显示项目(由我完成)

2) 然后我想对每个列表项运行倒计时(1分钟)并显示 在文本中对每个项目进行不同的倒计时(由我完成),并在时间到期后从listView中删除该项目

3) 然后我需要在点击任何项目时显示对话框(有两个选项,接受和拒绝)

4) 然后,如果用户选择接受(从对话框),我想在文本视图中显示“已接受”

5) 或者,如果用户选择拒绝,我想在文本视图中显示“拒绝”,然后在1分钟后从列表中删除该项目(即显示拒绝的项目最多1分钟)

公共类MainActivity扩展活动{
//listview对象
私有列表视图;
//用于存储将传入适配器的数据的列表
私人名册;
//视图持有者用户从列表项中保留视图
视窗座;
//随机数
Random rand=新的Random();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化listView
lvView=(ListView)findViewById(lvItems);
//初始化列表产品
lstroost=newarraylist();
//初始化自定义适配器:传递-(上下文,列表)
final CountdownAdapter cda=新的CountdownAdapter(MainActivity.this,lstroost);
//将适配器设置为列表视图
设置适配器(cda);
//在列表上设置onlistItemClickListener
lvView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图,
最终整数位置,长id){
//在这里采取行动。
//Toast.makeText(MainActivity.this,position+“Clicked”,Toast.LENGTH_SHORT.show();
//lvItems.removeViewAt(位置);
新建AlertDialog.Builder(MainActivity.this)
.setTitle(“名册”)
.setMessage(“请接受或取消花名册”)
.setPositiveButton(“接受”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//继续删除
Toast.makeText(MainActivity.this,“接受花名册”,Toast.LENGTH_SHORT.show();
获取(位置);
cda.notifyDataSetChanged();
}
})
.setNegativeButton(“拒绝”,新建DialogInterface.OnClickListener()){
public void onClick(DialogInterface dialog,int which){
//无所事事
//Toast.makeText(MainActivity.this,“无操作花名册将自动结束”,Toast.LENGTH_SHORT.show();
新建AlertDialog.Builder(MainActivity.this)
.setTitle(“注意”)
.setMessage(“您真的要拒绝花名册吗”)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//继续删除
//
//Toast.makeText(MainActivity.this,“删除花名册”,Toast.LENGTH_SHORT.show();
1.移除(位置);
cda.notifyDataSetChanged();
}
})
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//无所事事
//Toast.makeText(MainActivity.this,“无操作花名册将自动结束”,Toast.LENGTH_SHORT.show();
}
})
.setIcon(android.R.drawable.ic_对话框_警报)
.show();
}
})
.setIcon(android.R.drawable.ic_对话框_警报)
.show();
//移除(位置);
//cda.notifyDataSetChanged();
}
});
//我删除了用于删除列表项的按钮,所以我在下面的代码中进行了注释
//按钮btn=(按钮)findViewById(R.id.Button);
//btn.setOnClickListener(新视图.OnClickListener(){
//@覆盖
//公共void onClick(视图v){
//对于(int i=0;i 0){
整数秒=(整数)(时间差/1000)%60;
int分钟=(int)((timeDiff/(1000*60))%60);
整小时=(整小时)((时间差/(1000*60*60))%24);
tvTimeLeving.setText(小时+小时+分钟+分钟+秒+秒);
}否则{
tvTimeRemaining.setText(“过期!!”);
tVTimemelaining.setTextColor(Color.RED);
}
}
}
}

Wow,你需要将代码编辑成类似于任何格式的东西!我不知道怎么做,我只是复制了我的代码:(然后按ENTER键我试图通过复制粘贴到文本编辑器并自动格式化来编辑它,但其中有一些奇怪的字符。你用什么来编写这段代码?现在排序。只是等待编辑被批准。我直接在这个网站的“问问题”部分键入;我从android studio复制了我的代码
public class MainActivity extends Activity {


    //listview object
    private ListView lvView;
    //list to store data which will pass in adapter
    private List lstRoster;
    //view holder user to hold view from list-items
    ViewHolder holder;
    // forRandom number
    Random rand = new Random();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //initializing listView
        lvView = (ListView) findViewById(lvItems);

        //initializing list Products
        lstRoster = new ArrayList<>();
        //initializing custome adapter :passing-(context,list)
        final CountdownAdapter cda = new CountdownAdapter(MainActivity.this, lstRoster);

        //setting adapter to list view
        lvView.setAdapter(cda);
        //setting onlistItemClickListener on list
        lvView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView arg0, View view,
                    final int position, long id) {

                //Take action here.
                // Toast.makeText(MainActivity.this, position + " Clicked", Toast.LENGTH_SHORT).show();
                //lvItems.removeViewAt(position);
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("Roster")
                .setMessage("Please Accept Or cancel roster")
                .setPositiveButton("Accept", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // continue with delete
                        Toast.makeText(MainActivity.this, "Roster Accepted", Toast.LENGTH_SHORT).show();
                        lstRoster.get(position);
                        cda.notifyDataSetChanged();
                    }
                })
                .setNegativeButton("Reject", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // do nothing
                        // Toast.makeText(MainActivity.this, "No Action Roster will end automatically", Toast.LENGTH_SHORT).show();

                        new AlertDialog.Builder(MainActivity.this)
                        .setTitle("Attention")
                        .setMessage("Do you Really Want to Reject the roster")
                        .setPositiveButton("YES", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                // continue with delete
                                //
                                // Toast.makeText(MainActivity.this, "Roster Removed", Toast.LENGTH_SHORT).show();

                                lstRoster.remove(position);
                                cda.notifyDataSetChanged();
                            }
                        })
                        .setNegativeButton("NO", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                // do nothing
                                //Toast.makeText(MainActivity.this, "No Action Roster will end automatically", Toast.LENGTH_SHORT).show();





                            }
                        })
                        .setIcon(android.R.drawable.ic_dialog_alert)
                        .show();



                    }
                })
                .setIcon(android.R.drawable.ic_dialog_alert)
                .show();
                // lstProducts.remove(position);
                // cda.notifyDataSetChanged();
            }
        });

        //i remove button for removing list items so i commented below code
        // Button btn=(Button)findViewById(R.id.button);
        // btn.setOnClickListener(new View.OnClickListener() {
        // @Override
        // public void onClick(View v) {
        // for(int i=0;i<1;i++){
        // try {
        // Thread.sleep(100);
        //// Object toRemove = adapter.getItem(i);
        //// adapter.remove(toRemove);
        // if(!lstProducts.isEmpty()) {
        // lstProducts.remove(i);
        // cda.notifyDataSetChanged();
        // }
        // else {
        // Toast.makeText(MainActivity.this, "No Roster in list", Toast.LENGTH_SHORT).show();
        // }
        // } catch (InterruptedException e) {
        // e.printStackTrace();
        // }
        // }
        // }
        // });
        Button add = (Button) findViewById(R.id.add);
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0; i < 1; i++) {
                    try {
                        Thread.sleep(100);
                        // Object toRemove = adapter.getItem(i);
                        // adapter.remove(toRemove);
                        lstRoster.add(new Product("ID= " + rand.nextInt(100) + 1, System.currentTimeMillis() + 1000 * 60));
                        // lstProducts.add(new Product("O", System.currentTimeMillis() + 10000));

                        cda.notifyDataSetChanged();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }

    private class Product {
        String name;
        long expirationTime;

        public Product(String name, long expirationTime) {
            this.name = name;
            this.expirationTime = expirationTime;
        }
    }


    public class CountdownAdapter extends ArrayAdapter {

        private LayoutInflater lf;
        private List lstHolders;
        private Handler mHandler = new Handler();
        private Runnable updateRemainingTimeRunnable = new Runnable() {
            @Override
            public void run() {
                synchronized (lstHolders) {
                    long currentTime = System.currentTimeMillis();
                    for (ViewHolder holder : lstHolders) {
                        holder.updateTimeRemaining(currentTime);
                    }
                }
            }
        };

        public CountdownAdapter(Context context, List objects) {
            super(context, 0, objects);
            lf = LayoutInflater.from(context);
            lstHolders = new ArrayList<>();
            startUpdateTimer();
        }

        private void startUpdateTimer() {
            Timer tmr = new Timer();
            tmr.schedule(new TimerTask() {
                @Override
                public void run() {
                    mHandler.post(updateRemainingTimeRunnable);
                }
            }, 1000, 1000);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = lf.inflate(R.layout.list_item, parent, false);
                holder.tvProduct = (TextView) convertView.findViewById(R.id.tvProduct);
                holder.tvTimeRemaining = (TextView) convertView.findViewById(R.id.tvTimeRemaining);

                //buttons
                // holder.btnAccept = (Button) convertView.findViewById(R.id.btn_accept);
                // holder.btnReject = (Button) convertView.findViewById(R.id.btn_reject);


                // holder.btnAccept.setOnClickListener(new View.OnClickListener() {
                // @Override
                // public void onClick(View v) {
                //
                //
                // }
                // });
                // holder.btnAccept.setOnClickListener(new View.OnClickListener() {
                // @Override
                // public void onClick(View v) {
                //
                // }
                // });

                convertView.setTag(holder);
                synchronized (lstHolders) {
                    lstHolders.add(holder);
                }
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            holder.setData(getItem(position));

            return convertView;
        }


    }

    private class ViewHolder {
        TextView tvProduct;
        TextView tvTimeRemaining;
        Button btnAccept;
        Button btnReject;

        Product mProduct;

        public void setData(Product item) {
            mProduct = item;
            tvProduct.setText(item.name);
            updateTimeRemaining(System.currentTimeMillis());

        }


        public void updateTimeRemaining(long currentTime) {
            long timeDiff = mProduct.expirationTime - currentTime;
            if (timeDiff > 0) {
                int seconds = (int) (timeDiff / 1000) % 60;
                int minutes = (int) ((timeDiff / (1000 * 60)) % 60);
                int hours = (int) ((timeDiff / (1000 * 60 * 60)) % 24);
                tvTimeRemaining.setText(hours + " hrs " + minutes + " mins " + seconds + " sec");
            } else {
                tvTimeRemaining.setText("Expired!!");
                tvTimeRemaining.setTextColor(Color.RED);
            }
        }
    }
}