java - 实现从main到fragment的菜单项

标签 java android android-menu

祝大家有美好的一天。在选项菜单项上单击“我运行一种方法”它工作正常,但如果再次单击列表更新,但列表的第一项不会延迟它显示两次。需要单击 ListView 刷新并且列表仅显示新项目。

这是选项卡布局,所以我只写一些代码听

主要 Activity

TAZA taza;

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter ( FragmentManager fm ) {
        super(fm);
    }

    @Override
    public Fragment getItem ( int position ) {


        switch (position) {
            case 0:
                 taza = new TAZA();

                return taza;


        return null;
    }


    @Override
public boolean onCreateOptionsMenu ( Menu menu ) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected ( MenuItem item ) {

    int id = item.getItemId();

    if (id == R.id.refresh) {

       taza.aa();


        return true;
}

这是 fragment 选项卡; TAZA.java

 public class TAZA extends Fragment {


public TAZA () {
    // Required empty public constructor
}


ArrayList <NewsItem> newsItemsList;
ListView lvRss;
NewsAdaptor adapter;
Button button;
ProgressDialog pDialog;
@Override
public View onCreateView ( LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState ) {

    View view = inflater.inflate(R.layout.taza, container, false);
    lvRss = (ListView) view.findViewById(R.id.listtaza);
    newsItemsList = new ArrayList <>();
    RequestQueue queue = MySingleton.getInstance(getActivity().getApplicationContext()).
            getRequestQueue();


    return view;
}



    public void aa(){
    StringRequest stringRequest1 = new StringRequest
        ("https://politepol.com/feed/18863", new Response.Listener <String>() {

            @Override
            public void onResponse ( String response ) {
                Log.d("asd","aa");
                Document documentgeo = Jsoup.parse(response);
                Elements itemElementsge = documentgeo.getElementsByTag("item");
                for (int i = 0; i < itemElementsge.size(); i++) {
                    Element itemge = itemElementsge.get(i);

                    String s = itemge.child(0).text();
                    Document document1 = Jsoup.parse(s);
                    String img = document1.getElementsByTag("img").first().attr("src");
                    String title = document1.getElementsByTag("img").first().attr("title");
                    String link = document1.getElementsByTag("a").first().attr("href");
                    String dateeee = rem1(itemge.child(3).text());
                    Log.d("zxc",""+link);
                    String datevee = dateeee;
                    SimpleDateFormat spf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
                    Date newDate = null;
                    try {
                        newDate = spf.parse(datevee);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                    spf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
                    datevee = spf.format(newDate);

                    NewsItem newsItem = new NewsItem();
                    newsItem.setImagePath(img);
                    newsItem.setDate(datevee);
                    newsItem.setTitle(title);
                    newsItem.setLink(link);
                    newsItem.setDatedisplay("DATE" + "  " + rem(datevee));
                    newsItemsList.add(newsItem);

                }
                adapter = new NewsAdaptor(getContext(), newsItemsList);
                lvRss.setAdapter(adapter);
                lvRss.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick ( AdapterView <?> parent, View view, int position, long id ) {

                        NewsItem currentNews = newsItemsList.get(position);
                        Intent intent = new Intent(getContext(), Detail.class);
                        intent.putExtra("NEWS", currentNews);
                        startActivity(intent);
                    }
                });
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse ( VolleyError error ) {
                aa();
                Log.d("asd","a");
            }
        });
    MySingleton.getInstance(getContext()).addToRequestQueue(stringRequest1);
}

新闻适配器

public class NewsAdaptor extends BaseAdapter {
TextView tvtitle;
RelativeLayout view2;
Context context;

private int color;
private int colorback;
private int textSize;

public NewsAdaptor ( Context context, ArrayList <NewsItem> newsList ) {
    this.context = context;
    this.newsList = newsList;
    this.color = Color.RED;

}

ArrayList <NewsItem> newsList;


@Override
public int getCount () {

    return newsList.size();
}

@Override
public Object getItem ( int position ) {

    return newsList.get(position);
}

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

@SuppressLint("ResourceAsColor")
@Override
public View getView ( int position, View convertView, ViewGroup parent ) {
    if (convertView == null) {
        convertView = View.inflate(context, R.layout.newsitemlist_layout, null);

    }
    NewsItem currentNews = newsList.get(position);
    ImageView iv1 = (ImageView) convertView.findViewById(R.id.mainimg);
    tvtitle = (TextView) convertView.findViewById(R.id.textView1id);

    TextView tvdate = (TextView) convertView.findViewById(R.id.pubDateid);

    tvtitle.setText(currentNews.getTitle());
    tvdate.setText(currentNews.getDatedisplay());
    return convertView;
}

最佳答案

只需在方法开始处添加 newsItemList.clear() 即可。它不会产生重复的数据。

关于java - 实现从main到fragment的菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206545/

相关文章:

java - 如何在 fragment 中使用与 Activity 不同的菜单?

java - 为什么我的工具栏没有显示任何内容,即使它显示并放置正确?

java - 如何使用 jtable 标题将 jtable 保存在 pdf 上

java - 显示标签问题

java - List<Dog> 是 List<Animal> 的子类吗?为什么 Java 泛型不是隐式多态的?

android - 如何在 Android 上为按钮设置背景灯?

Android拆分操作栏,顶部和底部都有操作项?

java - 如何将包含 < 字符的字符串属性注入(inject) Spring bean?

android - 如何获取 apk 文件以在 android 手机上运行 atinout 程序?

java - 如何在同一页面播放视频(媒体播放器)