Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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 从简单的listview代码创建自定义适配器_Java_Android_Android Listview_Custom Adapter - Fatal编程技术网

Java 从简单的listview代码创建自定义适配器

Java 从简单的listview代码创建自定义适配器,java,android,android-listview,custom-adapter,Java,Android,Android Listview,Custom Adapter,我需要为listview创建一个自定义适配器,但我不明白如何才能做到这一点。实际上,它在我的工作中起作用,但只是使用一个列表视图,所有对象都在默认的android列表布局中。我需要单独创建自定义适配器的对象。这是实际代码: private static class SoluzioniLoader extends AsyncTaskLoader<List<Soluzione>> { private FermataComune partenza; priva

我需要为listview创建一个自定义适配器,但我不明白如何才能做到这一点。实际上,它在我的工作中起作用,但只是使用一个列表视图,所有对象都在默认的android列表布局中。我需要单独创建自定义适配器的对象。这是实际代码:

private static class SoluzioniLoader extends AsyncTaskLoader<List<Soluzione>> {

    private FermataComune partenza;
    private FermataComune arrivo;
    private String data;

    public SoluzioniLoader(Context context, FermataComune partenza, FermataComune arrivo, String data) {
      super(context);
      this.partenza = partenza;
      this.arrivo = arrivo;
      this.data = data;
    }

    @Override
    public List<Soluzione> loadInBackground() {

    try {

      List<Soluzione> soluzioni = Client.cercaCorseAndata(partenza, arrivo, data);
      return soluzioni;
    } catch (IOException e) {
      e.printStackTrace();
      return null;
    }

    }
}

private LoaderCallbacks<List<Soluzione>> mLoaderCallbacks = new LoaderCallbacks<List<Soluzione>>() {
    private ProgressDialog pd;
    @Override
    public Loader<List<Soluzione>> onCreateLoader(int id, Bundle args) {
    pd = new ProgressDialog(SoluzioniActivity.this);
    pd.setTitle("Caricamento Soluzioni Trovate");
    pd.setMessage("Attendi...");
    pd.setIndeterminate(false);
    pd.show();

    return new SoluzioniLoader(SoluzioniActivity.this, partenza, arrivo, data);
}

@Override
public void onLoadFinished(Loader<List<Soluzione>> loader, List<Soluzione> data) {
    try {
    pd.dismiss();
     } catch(Exception e){  
    }

    if (data == null) {
    // ERRORE
    } else {
    mListView.setAdapter(new ArrayAdapter<Soluzione>(SoluzioniActivity.this, android.r.layout.simple_list_item_1, data));
}
我已经为该行创建了布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
 >


    <TextView 
    android:id="@+id/fromhour"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    />

    <TextView 
    android:id="@+id/from"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    />

    <TextView 
    android:id="@+id/tohour"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    />

    <TextView 
    android:id="@+id/to"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    />

</LinearLayout>
如何在这里创建和集成自定义适配器?谢谢

请尝试以下代码:

//声明您的自定义适配器:

private EfficientAdapter adapter;
在onCreate中初始化它:

adapter = new EfficientAdapter(this);
然后设置列表适配器

your_listview.setAdapter(adapter);
//您的适配器代码:

private class EfficientAdapter extends BaseAdapter {

        private LayoutInflater mInflater;
        private Context context;
        private Bitmap imageBitmap = null;

        public EfficientAdapter(Context context) {
            mInflater = LayoutInflater.from(context);
            this.context = context;
        }

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

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

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

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

            final ViewHolder holder;

            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.featured_item, null);
                holder = new ViewHolder();
                holder.txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
                holder.txtAuthorName = (TextView) convertView.findViewById(R.id.txtAuthorName);
                holder.txtDescription = (TextView) convertView.findViewById(R.id.txtDescription);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            holder.txtTitle.setText(data.get(position).get("article_title"));
            holder.txtAuthorName.setText(data.get(position).get("author_name"));
            holder.txtDescription.setText(data.get(position).get("article_text"));

            return convertView;
        }

        class ViewHolder {
//YOUR ATTRUBUTES TO DISPLAY IN LIST DECLARE HERE
            TextView txtTitle;
            TextView txtAuthorName;
            TextView txtDescription;
        }

    }

我需要了解如何将您的代码集成到我的代码中:它是完美的,感谢您的回答..因此,我需要创建适配器作为您的适配器,但具有正确的文本视图,然后呢?在我的书里有:this.partenza=partenza;this.arrivo=arrivo;这个数据=数据;那是我的目标。。我发布的代码。。我必须重写它吗?只需创建一个arraylist或数据数组,然后在TextView中替换要挖掘的值,使用您的texuviews,就这样,请接受并向上投票答案。我正在尝试。。我会告诉你我是否会做正确的:D