Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建自定义基本适配器?_Java_Android_Listview_Android Fragments_Android Adapter - Fatal编程技术网

Java 如何创建自定义基本适配器?

Java 如何创建自定义基本适配器?,java,android,listview,android-fragments,android-adapter,Java,Android,Listview,Android Fragments,Android Adapter,我正在尝试制作我自己的基本适配器,以便在ListFragment中动态显示单选按钮,代码崩溃,我不知道确切的原因是什么,但当我尝试在ListView上设置适配器时会发生这种情况。有人知道我做错了什么? XML单选按钮: 适配器中的不兼容类型将导致崩溃。例如,这包括尝试在适配器输出的TextView中显示一个数字,而不是使用“Integer.toString(i);”正确转换它 1.在TiposFragment.java中,将所有getContext()替换为getActivity() 2.从o

我正在尝试制作我自己的基本适配器,以便在ListFragment中动态显示单选按钮,代码崩溃,我不知道确切的原因是什么,但当我尝试在ListView上设置适配器时会发生这种情况。有人知道我做错了什么?

XML单选按钮:


适配器中的不兼容类型将导致崩溃。例如,这包括尝试在适配器输出的TextView中显示一个数字,而不是使用“Integer.toString(i);”正确转换它

1.
TiposFragment.java
中,将所有
getContext()
替换为
getActivity()

2.
onCreateView()中删除以下行:

更新
TiposFragment
如下:

public class TiposFragment extends ListFragment {
private ArrayList<Tipo> tipos;
private TipoAdapter tipoAdapter;
private int selecionado;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}

@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
    super.onListItemClick(lv, v, position, id);
    selecionado = tipoAdapter.getItem(position).tipCod;
    for(int i=0;i<lv.getCount();i++){
        if(i!=position){
         RadioButton rb= (RadioButton)  lv.getChildAt(i);
            rb.setChecked(false);
        }
    }
    Toast.makeText(getActivity(), lv.getChildAt(position).toString(), Toast.LENGTH_SHORT).show();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_tipo_trilha, container, false);

    try {
        Bundle bundle = getArguments();
        if (bundle != null) {
            tipos = bundle.getParcelableArrayList("tipos");
        }    
    } catch (Exception e) {
        Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_LONG).show();
    }

    if (tipos != null) {
        try {
            tipoAdapter = new TipoAdapter(getActivity(), tipos);
            setListAdapter(tipoAdapter);

        } catch (Exception e) {

            Log.d("TAG",e.toString());
            Toast.makeText(getActivity(), e.toString(),Toast.LENGTH_LONG).show();
        }

    }
    return view;
}
公共类TiposFragment扩展了ListFragment{
私人ArrayList tipos;
专用TipoAdapter TipoAdapter;
私人内部选择;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
}
@凌驾
public void onListItemClick(列表视图lv、视图v、整数位置、长id){
super.onListItemClick(lv、v、位置、id);
selecionado=tipoAdapter.getItem(位置).tipCod;

对于(int i=0;我不能说它在没有从logcat发布堆栈跟踪的情况下崩溃。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>
</RelativeLayout>
public class TipoAdapter extends BaseAdapter {
private ArrayList<Tipo> tipos;
private Context context;
public TipoAdapter(Context context,ArrayList<Tipo> tipos) {
    this.tipos = tipos;
    this.context = context;
}

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

@Override
public Tipo getItem(int i) {
    return tipos.get(i);
}

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    ViewHolder holder;
    if(view == null){
        view= LayoutInflater.from(context).inflate(R.layout.item_tipo_trilha,viewGroup,false);
        holder= new ViewHolder();
        holder.rb=(RadioButton) view.findViewById(R.id.rbTipo);
        view.setTag(holder);

    }else{
        holder=(ViewHolder)view.getTag();
    }
    Tipo b = getItem(i);
    holder.rb.setText(b.tipNome);
    holder.rb.setTag(i);

    return view;

}
private static class ViewHolder{
    RadioButton rb;
    public ViewHolder() {
    }
}
public class TiposFragment extends ListFragment {
private ArrayList<Tipo> tipos;
private TipoAdapter tipoAdapter;
private int selecionado;
private ListView listView;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);


}

@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
    super.onListItemClick(lv, v, position, id);
    selecionado = tipoAdapter.getItem(position).tipCod;
    for(int i=0;i<lv.getCount();i++){
        if(i!=position){
         RadioButton rb= (RadioButton)  lv.getChildAt(i);
            rb.setChecked(false);
        }
    }
    Toast.makeText(getContext(), lv.getChildAt(position).toString(), Toast.LENGTH_SHORT).show();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_tipo_trilha, container, false);
    listView=(ListView) view.findViewById(android.R.id.list);
    try {
        Bundle bundle = getArguments();
        if (bundle != null) {
            tipos = bundle.getParcelableArrayList("tipos");
        }


    } catch (Exception e) {
        Toast.makeText(getContext(), e.toString(), Toast.LENGTH_LONG).show();
    }

    if (tipos != null) {
        try {
            tipoAdapter = new TipoAdapter(getContext(), tipos);
            listView.setAdapter(tipoAdapter);
            setListAdapter(tipoAdapter);

            // Toast.makeText(getContext(),String.valueOf(listaTipos.getCount()),Toast.LENGTH_LONG).show();

        } catch (Exception e) {
            // Toast.makeText(getContext(), e.toString(), Toast.LENGTH_LONG).show();
            Log.d("TAG",e.toString());
            Toast.makeText(getContext(),e.toString(),Toast.LENGTH_LONG).show();
        }

    }
    return view;
}
05-09 10:23:03.309 909-909/bdes.dcc.joinville.udesc.br.biketrilhas E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                 Process: bdes.dcc.joinville.udesc.br.biketrilhas, PID: 909
                                                                                 java.lang.ClassCastException: java.lang.Integer cannot be cast to br.udesc.joinville.dcc.bdes.adapter.TipoAdapter$ViewHolder
                                                                                     at br.udesc.joinville.dcc.bdes.adapter.TipoAdapter.getView(TipoAdapter.java:52)
                                                                                     at android.widget.AbsListView.obtainView(AbsListView.java:2396)
                                                                                     at android.widget.ListView.measureHeightOfChildren(ListView.java:1290)
                                                                                     at android.widget.ListView.onMeasure(ListView.java:1202)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.widget.RelativeLayout.measureChild(RelativeLayout.java:698)
                                                                                     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:482)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5725)
                                                                                     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5725)
                                                                                     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
                                                                                     at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
                                                                                     at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5725)
                                                                                     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                     at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5725)
                                                                                     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
                                                                                     at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
                                                                                     at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5725)
                                                                                     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5725)
                                                                                     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
                                                                                     at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
                                                                                     at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5725)
                                                                                     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2848)
                                                                                     at android.view.View.measure(View.java:17834)
                                                                                     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2030)
                                                                                     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1174)
                                                                                     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1395)
                                                                                     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1062)
                                                                                     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5873)
                                                                                     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
                                                                                     at android.view.Choreographer.doCallbacks(Choreographer.java:580)
                                                                                     at android.view.Choreographer.doFrame(Choreographer.java:550)
                                                                                     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
                                                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                     at android.os.Looper.loop(Looper.java:135)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5753)
                                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
listView = (ListView) view.findViewById(android.R.id.list);
listView.setAdapter(tipoAdapter);
public class TiposFragment extends ListFragment {
private ArrayList<Tipo> tipos;
private TipoAdapter tipoAdapter;
private int selecionado;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}

@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
    super.onListItemClick(lv, v, position, id);
    selecionado = tipoAdapter.getItem(position).tipCod;
    for(int i=0;i<lv.getCount();i++){
        if(i!=position){
         RadioButton rb= (RadioButton)  lv.getChildAt(i);
            rb.setChecked(false);
        }
    }
    Toast.makeText(getActivity(), lv.getChildAt(position).toString(), Toast.LENGTH_SHORT).show();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_tipo_trilha, container, false);

    try {
        Bundle bundle = getArguments();
        if (bundle != null) {
            tipos = bundle.getParcelableArrayList("tipos");
        }    
    } catch (Exception e) {
        Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_LONG).show();
    }

    if (tipos != null) {
        try {
            tipoAdapter = new TipoAdapter(getActivity(), tipos);
            setListAdapter(tipoAdapter);

        } catch (Exception e) {

            Log.d("TAG",e.toString());
            Toast.makeText(getActivity(), e.toString(),Toast.LENGTH_LONG).show();
        }

    }
    return view;
}