Android 适配器和列表活动

Android 适配器和列表活动,android,Android,我正在尝试为Android 5.0.1开发一个应用程序。我被一个适配器卡住了。我无法显示布局。我对Listview不是很实用。我寻找解决办法,但我并不幸运。谢谢你的帮助。 这是我的密码: 适配器类: package esp1415.xyz; import java.util.List; import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Color

我正在尝试为Android 5.0.1开发一个应用程序。我被一个适配器卡住了。我无法显示布局。我对Listview不是很实用。我寻找解决办法,但我并不幸运。谢谢你的帮助。 这是我的密码:

适配器类:

package esp1415.xyz;

import java.util.List;

import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.ToggleButton;

public class ListaFarmaciAdapter extends BaseAdapter {

    private Context contesto;
    private List<DettagliFarmaco> lfarm;

    public ListaFarmaciAdapter(Context context, List<DettagliFarmaco> list) {
        contesto = context;
        lfarm = list;
    }

    public void setFarmaci(List<DettagliFarmaco> list) {
        lfarm = list;
    }
    @Override
    public int getCount() {
        if (lfarm != null) {
            return lfarm.size();
        }
        return 0;
    }

    @Override
    public Object getItem(int position) {
        if (lfarm != null) {
            return lfarm.get(position);
        }
        return null;
    }

    @Override
    public long getItemId(int position) {
        if (lfarm != null) {
            return lfarm.get(position).id;
        }
        return 0;
    }

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

        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) contesto.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.grafico, parent, false);
        }
        DettagliFarmaco mod = (DettagliFarmaco) getItem(position);

        TextView txtNome = (TextView) view.findViewById(R.id.nome_farmaco);
        txtNome.setText(mod.nome);

        TextView txtDesc = (TextView) view.findViewById(R.id.desc_farmaco);
        txtDesc.setText(mod.descrizione);

        TextView txtQnt = (TextView) view.findViewById(R.id.qnt_farmaco);
        txtQnt.setText(mod.quantità);

        TextView txtInd = (TextView) view.findViewById(R.id.ind_farmaco);
        txtInd.setText(mod.indice_associato);

        TextView txtSveglia = (TextView) view.findViewById(R.id.sveglia);
        txtSveglia.setText(String.format("%02d : %02d", mod.ore, mod.minuti));

        modificaColoreTesto((TextView) view.findViewById(R.id.l), mod.getRipGiorno(DettagliFarmaco.LUNEDÌ));
        modificaColoreTesto((TextView) view.findViewById(R.id.ma), mod.getRipGiorno(DettagliFarmaco.MARTEDÌ));
        modificaColoreTesto((TextView) view.findViewById(R.id.me), mod.getRipGiorno(DettagliFarmaco.MERCOLEDÌ));
        modificaColoreTesto((TextView) view.findViewById(R.id.g), mod.getRipGiorno(DettagliFarmaco.GIOVEDÌ));
        modificaColoreTesto((TextView) view.findViewById(R.id.v), mod.getRipGiorno(DettagliFarmaco.VENERDÌ));
        modificaColoreTesto((TextView) view.findViewById(R.id.s), mod.getRipGiorno(DettagliFarmaco.SABATO));        
        modificaColoreTesto((TextView) view.findViewById(R.id.d), mod.getRipGiorno(DettagliFarmaco.DOMENICA));

        ToggleButton tog = (ToggleButton) view.findViewById(R.id.tog);
        tog.setChecked(mod.attiva);
        tog.setTag(Long.valueOf(mod.id));
        tog.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            ((ListaFarmaciActivity) contesto).setSvegliaAttiva(((Long) buttonView.getTag()).longValue(), isChecked);
        }
    });

            view.setTag(Long.valueOf(mod.id));
            view.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            ((ListaFarmaciActivity) contesto).startSveglia(((Long) view.getTag()).longValue());
        }
    });

    view.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View view) {
            ((ListaFarmaciActivity) contesto).deleteSveglia(((Long) view.getTag()).longValue());
            return true;
        }
    });

    return view;
}

private void modificaColoreTesto(TextView v, boolean att) {
    if (att) {
        v.setTextColor(Color.CYAN);
    } else {
        v.setTextColor(Color.LTGRAY);
    }
}
}
最后,我的日志:

01-22 10:40:49.961: E/AndroidRuntime(30751): FATAL EXCEPTION: main
01-22 10:40:49.961: E/AndroidRuntime(30751): Process: esp1415.xyz, PID: 30751
01-22 10:40:49.961: E/AndroidRuntime(30751): java.lang.RuntimeException: Unable to start activity ComponentInfo{esp1415.xyz/esp1415.xyz.ListaFarmaciActivity}: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3149)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3248)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.ActivityThread.access$1000(ActivityThread.java:197)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.os.Looper.loop(Looper.java:145)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.ActivityThread.main(ActivityThread.java:6872)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at java.lang.reflect.Method.invoke(Native Method)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at java.lang.reflect.Method.invoke(Method.java:372)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
01-22 10:40:49.961: E/AndroidRuntime(30751): Caused by: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.widget.AdapterView.addView(AdapterView.java:711)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:822)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:450)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.Activity.setContentView(Activity.java:2358)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at esp1415.xyz.ListaFarmaciActivity.onCreate(ListaFarmaciActivity.java:22)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.Activity.performCreate(Activity.java:6550)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
01-22 10:40:49.961: E/AndroidRuntime(30751):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3102)
01-22 10:40:49.961: E/AndroidRuntime(30751):    ... 10 more
01-22 10:40:49.961:E/AndroidRuntime(30751):由以下原因引起: java.lang.UnsupportedOperationException:addView(视图,布局参数) AdapterView中不支持

不要

view = inflater.inflate(R.layout.grafico, parent, false);
Do

view = inflater.from(context).inflate(R.layout.grafico, null);
你应该试试这个

    LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = null;
    if(view == null)
    {

    view = inflater.from(context).inflate(R.layout.community_common_list_layout, null);
    }

您是否可以尝试更改视图=充气机。充气(R.layout.grafico,parent,false);查看=充气机充气(R.layout.grafico,空);然后在getView()中尝试。谢谢您的回答,但它不起作用。我的问题是我的清单没有膨胀。我检查了所有内容,寻找教程和问题,我的代码似乎是正确的。但我的列表仍然是空的。@Velika好的,
列表仍然是空的
意味着没有值,这就是问题的原因
view = inflater.from(context).inflate(R.layout.grafico, null);
    LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = null;
    if(view == null)
    {

    view = inflater.from(context).inflate(R.layout.community_common_list_layout, null);
    }