繁体   English   中英

如何在android中显示特定的单行项目onclick的listview项目以及上一个/下一个按钮?

[英]How to show particular single row item onclick of listview item along with previous / next button in android?

我有两个活动A和B。

在A活动中,我在listview显示所有记录。 当用户单击活动A上列出的任何项目时,它应该重定向到下一个活动B,并且应该已经显示了该特定的单个项目以及“下一个/上一个”按钮。

当用户单击“下一个”或“上一个”按钮时,应相应地更改该项目。

我应该使用listview还是仅使用listview来显示活动B上的特定记录,该记录在单击上一个/下一个时会发生变化。 如何实现呢?

请帮帮我。 这是我的活动A

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_giga);
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy); 
     System.out.println("My Exception 333: ");

      loadNews();
}
private void loadNews(){    
      try{
             BaseFeedParserGiga parser = new BaseFeedParserGiga();
                messages = parser.parsse();
                final String title[]= new String[messages.size()] ;
                final String pubdate[]= new String[messages.size()] ;
                final String link[]= new String[messages.size()] ;
                final String Long[]= new String[messages.size()] ;
                final String image[]= new String[messages.size()] ;
                list = new ArrayList<String>(messages.size());
                mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
                for (com.example.newsworld.MessageGiga msg : messages){
                    list.add(msg.getTitle());
                    title[j]=msg.getTitle();
                    pubdate[i]=msg.getPubdate();
                    link[m]=msg.getLink();
                    Long[l]=msg.getDesc();
                    Document doc = Jsoup.parse(Long[l]);
                     Elements links = doc.getElementsByTag("img");
                     String src = links.attr("src");
                    image[k]=src;       
                 setListAdapter(new ArrayAdapter<String>(GigaActivity.this, R.layout.rows, list ){
                            @Override
                            public View getView(final int j, View convertView, ViewGroup parent) {
                                            View row;
                                            ViewHolder holder;      
                                            if (convertView == null) {
                                                    convertView = mInflater.inflate(R.layout.row, parent, false);
                                                    System.out.println("My Exception 5: ");
                                                    holder = new ViewHolder();
                                                    holder.txtclick= (TextView) convertView.findViewById(R.id.textView1);
                                                    holder.txtTitle = (TextView) convertView.findViewById(R.id.textView2);
                                                    convertView.setTag(holder);
                                            } else {
                                                    holder = (ViewHolder) convertView.getTag();
                                            }
                                            String s=image[j];

                                            holder.txtTitle.setText(title[j]+"\n\n"+pubdate[j]);
                                            holder.txtclick.setOnClickListener( new OnClickListener()
                                               {
                                                    public void onClick(View viewParam)
                                                    {
                                                    Intent in = new Intent(GigaActivity.this,GigaPage.class);
                                                 in.putExtra("title", title[j]);
                                                 in.putExtra("pubdate", pubdate[j]);
                                                 in.putExtra("link", link[j]);
                                              startActivity(in);
                                            overridePendingTransition(R.anim.grow_from_middle,R.anim.shrink_to_middle);   
                                                    }
                                                   });
                                            return convertView;
                             }  

                            class ViewHolder {
                                    TextView txtLat;
                                    TextView txtTitle; 
                                    TextView txtPubdate; 
                                    ImageView txtLink;
                                    TextView txtclick;
                            }
                    });  

                         j++;
                         i++;
                         m++;
                         l++;
                         k++;
                    }

           }catch(Exception exc){
               System.out.println("My Exception : "+exc.getMessage());
           }
}

我想我会按照您的建议来布局B页,就像带有一些箭头的TextViews的集合一样,它们的任一侧都通过其游标在A页的listview后面移动来获取其索引,从而钩住它们的onClick方法以检索适当的对象。可能还会有侧滑手势做同样的事情。

ViewGroup pageB = (ViewGroup) ViewGroup.inflate(this, R.layout.pageB, null);
TextView textView = (TextView) pageB.findViewById(R.id.a_text_view);

listViewAdapter = new SimpleCursorAdapter(this, R.layout.listitem, listCursor, tableFromColumns, toListItemViews, 0);
listView.setAdapter(listViewAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    listCursor.moveToPosition(position);
        textView.setText(listCursor.getString(0)); //set textview on pageB with record data
        setContentView(pageB);
    }
});

void onClickNextRecord() {
    listCursor.moveToNext(); // go to next record
    textView.setText(listCursor.getString(0)); //update textview on pageB with next record data
}

取一个字段Hashmap

HashMap<String,com.example.newsworld.MessageGiga> messages=new HashMap<String,com.example.newsworld.MessageGiga>();

在for循环中

   for (com.example.newsworld.MessageGiga msg : messages){
messages.put(msg.getTitle(),msg);

}

额外发送此邮件,请确保您的邮件已序列化

intent.putExtra("messages",messages);

然后在GigaPage中像这样

if (getIntent().getSerializableExtra("messages") != null)
            messages= (HashMap<String, com.example.newsworld.MessageGiga>) getIntent().getSerializableExtra("messages");

您还将发送用于填充列表视图的列表

首先获得所选项目的索引,像这样

 int index = yourlist.indexOf(title)  //here title is selected item title

像这样获取当前标题的数据

com.example.newsworld.MessageGiga  msg=messges.get(ttile);

它将返回包含与消息相关的标题的所有信息的消息对象

对于以前的onClick减少索引是这样的

index=index-1;
title=yourlist.get(index);
com.example.newsworld.MessageGiga  msg=messges.get(ttile);

下一个递增索引va; ue进行相同的操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM