有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

自定义listview智能保持器按钮单击时出现java问题

实际上,我正在尝试使用自定义列表视图创建一个应用程序

在此应用程序中,当主活动将初始化时,将出现一个列表视图, 然后,当用户单击列表项时,“获取位置信息”将打开不同的活动。。。然后在不同的活动中会出现相同的新listView,到目前为止我已经完成了

但当点击不同活动的列表项后,将打开另一个活动,但根据主活动位置会出现相同的活动

**

现在请帮助我,我如何控制支架。列表按钮按活动方式单击

**

这是我的CustomBaseAdapter源代码

    package com.sbappstore.romjanbanglacalendar;

import 安卓.content.Context;
import 安卓.content.Intent;
import 安卓.support.v7.widget.Toolbar;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.BaseAdapter;
import 安卓.widget.Button;
import 安卓.widget.LinearLayout;

import com.blogspot.atifsoftwares.animatoolib.Animatoo;

import java.lang.annotation.Target;

public class CustomBaseAdapter extends BaseAdapter {

    String[] Name_of_District;
    Context context;
    private static LayoutInflater inflater = null;

    //Constructor
    public CustomBaseAdapter(MainActivity mainActivity, String[] Names_of_District){

        Name_of_District = Names_of_District;
        context = mainActivity;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(DhakaDistrict dhakaDistrict, String[] dhakaDistrictNames) {
        Name_of_District = dhakaDistrictNames;
        context = dhakaDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(BorishalDistrict borishalDistrict, String[] borishaDistrictNames) {
        Name_of_District = borishaDistrictNames;
        context = borishalDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(ChattogramDistrict chattogramDistrict, String[] chattogramDistrictNames) {
        Name_of_District = chattogramDistrictNames;
        context = chattogramDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(KhulnaDistrict khulnaDistrict, String[] khulnaDistrictNames) {
        Name_of_District = khulnaDistrictNames;
        context = khulnaDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(MoymonsinghDistrict moymonsinghDistrict, String[] moymonsinghDistrictNames) {
        Name_of_District = moymonsinghDistrictNames;
        context = moymonsinghDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(ProyojoniyoDua proyojoniyoDua, String[] dua) {
        Name_of_District = dua;
        context = proyojoniyoDua;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(QuranHadith quranHadith, String[] hadithQuran) {
        Name_of_District = hadithQuran;
        context = quranHadith;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(RajshahiDistrict rajshahiDistrict, String[] rajshahiDistrictNames) {
        Name_of_District = rajshahiDistrictNames;
        context = rajshahiDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(RangporDistrict rangporDistrict, String[] rongpurDistrictNames) {
        Name_of_District = rongpurDistrictNames;
        context = rangporDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(RomjanerKhaddavash romjanerKhaddavash, String[] khaddavvash) {
        Name_of_District = khaddavvash;
        context = romjanerKhaddavash;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(SylhetDistrict sylhetDistrict, String[] sylhetDistrictNames) {
        Name_of_District = sylhetDistrictNames;
        context = sylhetDistrict;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    //Constructor
    public CustomBaseAdapter(ArticleMasyala articleMasyala, String[] masayla) {
        Name_of_District = masayla;
        context = articleMasyala;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return Name_of_District.length;
    }

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

    @Override
    public long getItemId(int position) {
        return position;
    }
    public class MyHolder{
        Button ListButton;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        final MyHolder holder = new MyHolder();
        final View view;

        view = inflater.inflate(R.layout.custom_list, null);
        holder.ListButton = (Button) view.findViewById(R.id.ListButton);
        holder.ListButton.setText(Name_of_District[position]);


        holder.ListButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View customView) {
               int id = customView.getId();

                if (position==0) {
                    //Toast.makeText(context,"Position 0", Toast.LENGTH_SHORT).show();
                    context.startActivity(new Intent(context,DhakaDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==1) {
                    context.startActivity(new Intent(context,ChattogramDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==2) {
                    context.startActivity(new Intent(context,SylhetDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==3) {
                    context.startActivity(new Intent(context,BorishalDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==4) {
                    context.startActivity(new Intent(context,MoymonsinghDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==5) {
                    context.startActivity(new Intent(context,RajshahiDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==6) {
                    context.startActivity(new Intent(context,KhulnaDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==7) {
                    context.startActivity(new Intent(context,RangporDistrict.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==8) {
                    context.startActivity(new Intent(context,ProyojoniyoDua.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==9) {
                    context.startActivity(new Intent(context,QuranHadith.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==10) {
                    context.startActivity(new Intent(context,ArticleMasyala.class));
                    Animatoo.animateSlideLeft(context);
                }
                if (position==11) {
                    context.startActivity(new Intent(context,RomjanerKhaddavash.class));
                    Animatoo.animateSlideLeft(context);
                }
            }
        });

        return view;
    }
}

这是我的主要活动。爪哇

<pre><code>
    package com.sbappstore.romjanbanglacalendar;

import 安卓.os.Bundle;

import 安卓.widget.ListView;

public class MainActivity extends ToolbarAdapter {

    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);


        listView = (ListView) findViewById(R.id.listViewId);
        String[] districtNames = getResources().getStringArray(R.array.District_Names);

        CustomBaseAdapter adapter = new CustomBaseAdapter(this,districtNames);
        listView.setAdapter(adapter);

    }
}
<pre><code>

其他人都像下面这样活动

<pre><code>
    package com.sbappstore.romjanbanglacalendar;

import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;

import 安卓.widget.ListView;

public class DhakaDistrict extends ToolbarAdapter {
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dhaka_district);

        getSupportActionBar().setTitle("ঢাকা বিভাগ");

        listView = (ListView) findViewById(R.id.listViewId);
        String[] dhakaDistrictNames = getResources().getStringArray(R.array.Dhaka_District_Names);

        CustomBaseAdapter adapter = new CustomBaseAdapter(this,dhakaDistrictNames);
        listView.setAdapter(adapter);
    }
}

共 (1) 个答案

  1. # 1 楼答案

    首先,使用RecyclerViewListView是旧的,并且RecyclerView具有更好的结构

    第二,不要使用位置作为ID。在您的情况下,不会有任何问题。但是位置是可以改变的,所以是危险的

    下面的代码是我的建议,它不是一个完整的代码,只是关注如何使用ViewHolder模式

    public class MyHolder {
        // DO NOT use position as ID. I suggest you to use district name as ID.
        String districtName; 
        Button ListButton;
    }
    
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
    
        MyHolder holder;
    
        if (convertView == null) {
            holder = new MyHolder();
            convertView = inflater.inflate(R.layout.custom_list, null);
            holder.ListButton = (Button) view.findViewById(R.id.ListButton);
            holder.ListButton.setText(Name_of_District[position]);
    
            holder.districtName = ""; // may be Name_of_District[position]
    
            // Set your onClick listener here. Use districtName is ID. 
            holder.ListButton.setOnClickListener();
    
            convertView.setTag(holder);
        } else {
            holder = (MyHolder)convertView.getTag()
        }
    
        // Write rest of code here
    
        return convertView;
    }