Android在BaseAdapter类中设置布局权重

时间:2017-08-17 18:19:00

标签: android listview baseadapter

我正在创建一个只在ListView中显示某些数据的应用程序,这些数据应该使用适配器添加到Listview中。 在这个适配器中,我试图在点击时设置列表中项目的权重。 我通过将重量设置为1来扩展项目,但是当我尝试将重量设置为0时,没有任何反应。

在代码的这一部分中,将布局权重设置为1的第一部分确实有效但将其设置为0不起作用。

 stat_item_container.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.w("HiscoreAdapter","Stat item height "+gained_tracker_container.getHeight());
            if(gained_tracker_container.getHeight() == 0){
                gained_tracker_container.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,1));
            }else{
                Log.w("HiscoreAdapter","Setting stat item weight to 0");
                gained_tracker_container.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,0));
            }
        }
    });

适配器类



public class HiscoreAdapter extends BaseAdapter {

    private Context context;
    private ArrayList<HiscoreItem> items;

    public HiscoreAdapter(Context context, ArrayList<HiscoreItem> items){
        this.context = context;
        this.items = items;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.stats_item, parent, false);

        final LinearLayout stat_item_container = (LinearLayout) row.findViewById(R.id.stat_item_container);
        final LinearLayout gained_tracker_container = (LinearLayout) row.findViewById(R.id.gained_tracker_container);
        TypedArray images = row.getResources().obtainTypedArray(R.array.skill_icons);
        ImageView stats_icon = (ImageView) row.findViewById(R.id.stats_icon);
        TextView rank_textview = (TextView) row.findViewById(R.id.rank_textview);
        TextView level_textview = (TextView) row.findViewById(R.id.level_textview);
        TextView exp_textview = (TextView) row.findViewById(R.id.exp_textview);
        TextView daily_levels_textview = (TextView) row.findViewById(R.id.daily_levels_textview);
        TextView weekly_levels_textview = (TextView) row.findViewById(R.id.weekly_levels_textview);
        TextView monthly_levels_textview = (TextView) row.findViewById(R.id.monthly_levels_textview);
        TextView daily_exp_textview = (TextView) row.findViewById(R.id.daily_exp_textview);
        TextView weekly_exp_textview = (TextView) row.findViewById(R.id.weekly_exp_textview);
        TextView monthly_exp_textview = (TextView) row.findViewById(R.id.monthly_exp_textview);

        Picasso.with(row.getContext()).load("http://www.runescape.com/img/rsp777/hiscores/skill_icon_attack1.gif").into(stats_icon);
        //stats_icon.setBackgroundResource(images.getResourceId(position, defaultValue));
        rank_textview.setText(String.valueOf(items.get(position).getRank()));
        level_textview.setText(String.valueOf(items.get(position).getLevel()));
        exp_textview.setText(String.valueOf(items.get(position).getXp()));
        daily_levels_textview.setText("+"+String.valueOf(items.get(position).getDayLevelGains())+" lvl");
        weekly_levels_textview.setText("+"+String.valueOf(items.get(position).getWeekLevelGains())+" lvl");
        monthly_levels_textview.setText("+"+String.valueOf(items.get(position).getMonthLevelGains())+" lvl");
        daily_exp_textview.setText("+"+String.valueOf(items.get(position).getDayGains())+" exp");
        weekly_exp_textview.setText("+"+String.valueOf(items.get(position).getWeekGains())+" exp");
        monthly_exp_textview.setText("+"+String.valueOf(items.get(position).getMonthGains())+" exp");

        stat_item_container.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.w("HiscoreAdapter","Stat item height "+gained_tracker_container.getHeight());
                if(gained_tracker_container.getHeight() == 0){
                    gained_tracker_container.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,1));
                }else{
                    Log.w("HiscoreAdapter","Setting stat item weight to 0");
                    gained_tracker_container.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,0));
                }
            }
        });

        return row;
    }
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

    ArrayListObject.clear();
    ArrayListObject.addAll(DBClass.listAll(DBClass.class));
    AdapterObject.notifyDataSetChanged();
    listViewObject.invalidateViews();
    listViewObject.refreshDrawableState();

尝试使用此代码刷新ListView。在onItemClickedListener中的return语句之前添加它。

在第二行中,我使用SugarORM来调用我的数据