关于修改Listview或GridView的其中某一项问题

最近在考虑一个问题,难道修改listview或gridview的某一项,是否有其他方法实现,但经过搜索,发现也没有什么好的办法,看大家的实现案例,都是对传入adapter的集合进行修改,再调用notify方法刷新,主要的实现方法源代码如下(实现listview的增删改查):

public class TestActivity extends Activity {
    private PullRefreshListView listView;
    // 最后的可视项索引
    // private int visibleLastIndex = 0;
    @SuppressWarnings("unused")
    // 当前窗口可见项总数
    private int visibleItemCount;
    // 模拟数据集的条数
    private int datasize = 50;
    private MyListAdapter adapter;
    private View loadMoreView;
    private Button loadMoreButton;
    private Handler handler = new Handler();
    List<News> news;
    int k = 0;

    EditText edt1;
    EditText edt2;
    AutoCompleteTextView edt3;
    String playerChanged;
    String playerChanged2;
    int b = 0;
    String[] a;
    News s;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);
        loadMoreView = getLayoutInflater().inflate(R.layout.loadmore, null);
        loadMoreButton = (Button) loadMoreView
                .findViewById(R.id.loadMoreButton);
        loadMoreButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                loadMoreButton.setText("正在加载中..."); // 设置按钮文字
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        loadMoreData();
                        adapter.notifyDataSetChanged();
                        loadMoreButton.setText("查看更多..."); // 恢复按钮文字
                    }
                }, 2000);
            }
        });

        listView = (PullRefreshListView) findViewById(R.id.lvNews);
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int print,
                    long id) {
                News s = news.get(print - 1);
                setTitle(s.getTitle() + s.getContent());
            }
        });
        listView.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, final View v,
                    final int position, long id) {
                final String[] arrayFruit = new String[] { "删除", "添加", "修改",
                        "查找" };

                Dialog dialog = new AlertDialog.Builder(TestActivity.this)
                        .setTitle("请选择···")
                        .setIcon(R.drawable.ic_launcher)
                        .setItems(arrayFruit,
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        if (which == 0) {
                                            news.remove(position - 1);
                                            k++;
                                            adapter.notifyDataSetChanged();
                                        } else if (which == 1) {
                                            LayoutInflater layoutInflater = LayoutInflater.from(TestActivity.this);
                                            final View myLoginView = layoutInflater .inflate(R.layout.login, null);
                                            Dialog alertDialog = new AlertDialog.Builder(
                                                    TestActivity.this)
                                                    .setTitle("确定添加")
                                                    .setIcon(
                                                            R.drawable.ic_launcher)
                                                    .setView(myLoginView)
                                                    .setPositiveButton(
                                                            "确定",
                                                            new DialogInterface.OnClickListener() {

                                                                @Override
                                                                public void onClick( DialogInterface dialog, int which) {
                                                                    edt1 = (EditText) myLoginView .findViewById(R.id.edt1);
                                                                    edt2 = (EditText) myLoginView .findViewById(R.id.edt2);
                                                                    News tianjia = new News();
                                                                    tianjia.setTitle(edt1 .getText() .toString());
                                                                    tianjia.setContent(edt2 .getText() .toString());
                                                                    news.add(tianjia);
                                                                    adapter.notifyDataSetChanged();
                                                                    k--;
                                                                }
                                                            })
                                                    .setNegativeButton( "取消", new DialogInterface.OnClickListener() {

                                                                @Override
                                                                public void onClick( DialogInterface dialog, int which) {
                                                                    Toast.makeText( TestActivity.this, "添加失败!", Toast.LENGTH_SHORT) .show();
                                                                }
                                                            }).create();
                                            alertDialog.show();
                                        } else if (which == 2) {
                                            LayoutInflater layoutInflater = LayoutInflater .from(TestActivity.this);
                                            final View myLoginView = layoutInflater .inflate(R.layout.login, null);
                                            TextView c = (TextView) v .findViewById(R.id.newstitle);
                                            TextView d = (TextView) v .findViewById(R.id.newscontent);
                                            playerChanged = c.getText() .toString();
                                            playerChanged2 = d.getText() .toString();
                                            edt1 = (EditText) myLoginView .findViewById(R.id.edt1);
                                            edt2 = (EditText) myLoginView .findViewById(R.id.edt2);
                                            edt1.setText(playerChanged);
                                            edt2.setText(playerChanged2);
                                            Dialog alertDialog = new AlertDialog.Builder(
                                                    TestActivity.this)
                                                    .setTitle("确定修改")
                                                    .setIcon( R.drawable.ic_launcher)
                                                    .setView(myLoginView)
                                                    .setPositiveButton( "确定", new DialogInterface.OnClickListener() {
                                                                @Override
                                                                public void onClick( DialogInterface dialog, int which) {
                                                                    News xiugai = new News();
                                                                    xiugai.setTitle(edt1 .getText() .toString());
                                                                    xiugai.setContent(edt2 .getText() .toString());
                                                                    news.set( position - 1, xiugai);
                                                                    adapter.notifyDataSetChanged();
                                                                }
                                                            })
                                                    .setNegativeButton( "取消", new DialogInterface.OnClickListener() {

                                                                @Override
                                                                public void onClick( DialogInterface dialog, int which) {
                                                                    Toast.makeText( TestActivity.this, "修改失败!", Toast.LENGTH_SHORT) .show();
                                                                }
                                                            }).create();
                                            alertDialog.show();
                                        } else {
                                            int set = adapter.getCount();
                                            a = new String[set];
                                            System.out.println(set + "--------------");
                                            for (int i = 0; i < set; i++) {
                                                s = news.get(i);
                                                a[i] = s.getTitle();
                                                System.out.println("a[" + i + "]" + "=" + a[i]);
                                            }
                                            LayoutInflater layoutInflater = LayoutInflater .from(TestActivity.this);
                                            final View myLoginView = layoutInflater .inflate(R.layout.login1, null);
                                            edt3 = (AutoCompleteTextView) myLoginView .findViewById(R.id.autoCompleteTextView1);
                                            ArrayAdapter<String> av = new ArrayAdapter<String>( TestActivity.this, android.R.layout.simple_dropdown_item_1line, a);
                                            edt3.setAdapter(av);
                                            Dialog alertDialog = new AlertDialog.Builder( TestActivity.this)
                                                    .setTitle("确定查找")
                                                    .setIcon( R.drawable.ic_launcher)
                                                    .setView(myLoginView)
                                                    .setPositiveButton( "确定", new DialogInterface.OnClickListener() {

                                                                @Override
                                                                public void onClick( DialogInterface dialog, int which) {
                                                                    String tit = edt3 .getText() .toString();
                                                                    int set1 = adapter .getCount();
                                                                    for (int i = 0; i < set1; i++) {
                                                                        News s = news .get(i);
                                                                        if (s.getTitle() .equals(tit)) {
                                                                            b = i;
                                                                        }
                                                                    }
                                                                    news.add( 0, news.get(b));
                                                                    news.remove(b + 1);
                                                                    b = 0;
                                                                    adapter.notifyDataSetChanged();
                                                                }
                                                            })
                                                    .setNegativeButton(
                                                            "取消",
                                                            new DialogInterface.OnClickListener() {

                                                                @Override
                                                                public void onClick( DialogInterface dialog, int which) {
                                                                    Toast.makeText( TestActivity.this, "查找失败!", Toast.LENGTH_SHORT) .show();
                                                                }
                                                            }).create();
                                            alertDialog.show();
                                            // 这里不建议设置宽高 容易超出屏幕范围
                                            alertDialog.getWindow().setLayout(150, 400);

                                        }
                                        Toast.makeText(TestActivity.this, arrayFruit[which], Toast.LENGTH_SHORT).show();
                                    }
                                })
                        .setNegativeButton("取消",
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,
                                            int which) {

                                    }
                                }).create();
                dialog.show();
                return false;
            }
        });
        listView.addFooterView(loadMoreView); // 设置列表底部视图
        initializeAdapter();
        listView.setAdapter(adapter);
        listView.setonRefreshListener(new OnRefreshListener() {

            @Override
            public void onRefresh() {
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        loadMoreData();
                        adapter.notifyDataSetChanged();
                        listView.onRefreshComplete();
                    }
                }, 2000);
            }
        });
    }

    /**
     * 初始化ListView的适配器
     */
    private void initializeAdapter() {
        news = new ArrayList<News>();
        for (int i = 1; i <= 10; i++) {
            News items = new News();
            items.setTitle("alb新闻" + i);
            items.setContent("----你快点来南京----" + i);
            news.add(items);
        }
        adapter = new MyListAdapter(news);
    }

    /**
     * 加载更多数据
     */
    private void loadMoreData() {
        int count = adapter.getCount() + k;
        if (count == datasize) {
            Toast.makeText(this, "没有更新!", Toast.LENGTH_LONG).show();
            return;
        }
        if (count + 10 <= datasize) {
            for (int i = count + 1; i <= count + 10; i++) {
                News item = new News();
                item.setTitle("alb新闻" + i);
                item.setContent("----苍老师来南京----" + i);
                adapter.addNewsItem(item);
            }
        } else {
            for (int i = count + 1; i <= datasize; i++) {
                News item = new News();
                item.setTitle("alb新闻" + i);
                item.setContent("----苍老师来南京----" + i);
                adapter.addNewsItem(item);
            }
        }
    }

    class MyListAdapter extends BaseAdapter {
        List<News> newsItems;

        public MyListAdapter(List<News> newsitems) {
            this.newsItems = newsitems;
        }

        @Override
        public int getCount() {
            return newsItems.size();
        }

        @Override
        public Object getItem(int position) {
            return newsItems.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View view, ViewGroup parent) {
            if (view == null) {
                view = getLayoutInflater().inflate(R.layout.list_item, null);
            }
            // 新闻标题
            TextView tvTitle = (TextView) view.findViewById(R.id.newstitle);
            tvTitle.setText(newsItems.get(position).getTitle());
            // 新闻内容
            TextView tvContent = (TextView) view.findViewById(R.id.newscontent);
            tvContent.setText(newsItems.get(position).getContent());
            return view;
        }

        /**
         * 添加数据列表项
         *
         * @param newsitem
         */
        public void addNewsItem(News newsitem) {
            newsItems.add(newsitem);
        }
    }
}

转载于:https://my.oschina.net/reborn87/blog/482839

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值