1

SearchAdapter.java在數組適配器如何將多個textviews

public class SearchFeedAdapter extends ArrayAdapter<String> { 

    public int layout; 
    public class ViewHolder2 { 
     TextView pf_businessTitle; 
     TextView pf_addressDistance; 
     TextView pf_businessAddress; 
     TextView pf_businessLocation; 
     TextView pf_businessState; 
     TextView pf_businessZipCode; 
    } 

    // MyEvents myEvents; 
    public SearchFeedAdapter(Context context, int resource, List<String> objects) { 
     super(context, resource, objects); 
     layout=resource; 
    } 
    Context mContext; 



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

     SearchFeedAdapter.ViewHolder2 mainViewHolder=null; 
     mContext = parent.getContext(); 

     LayoutInflater inflater=LayoutInflater.from(getContext()); 
     convertView= inflater.inflate(layout,parent,false); 

     final SearchFeedAdapter.ViewHolder2 viewHolder=new SearchFeedAdapter.ViewHolder2(); 
     viewHolder.pf_businessTitle =(TextView)convertView.findViewById(R.id.pf_businessTitle); 
     viewHolder.pf_addressDistance =(TextView)convertView.findViewById(R.id.pf_addressDistance); 
     viewHolder.pf_businessAddress=(TextView)convertView.findViewById(R.id.pf_businessAddress); 
     viewHolder.pf_businessLocation=(TextView)convertView.findViewById(R.id.pf_businessLocation); 
     viewHolder.pf_businessState=(TextView)convertView.findViewById(R.id.pf_businessState); 
     viewHolder.pf_businessZipCode=(TextView)convertView.findViewById(R.id.pf_businessZipCode); 
     convertView.setTag(viewHolder); 

     viewHolder.pf_businessTitle.setText(getItem(position)); 

     mainViewHolder=(SearchFeedAdapter.ViewHolder2)convertView.getTag(); 
     // mainViewHolder.pf_businessTitle.setText(getItem(position)); 
     // String distance; 
     // mainViewHolder.pf_addressDistance.setText(getItem(position)); 
     return convertView; 


    } 

} 

SearchActivity.java

public class SearchFeedActivity extends AppCompatActivity{ 

    JSONObject jsonObject=new JSONObject(); 

    public static ArrayList<String> BusinessTitle = new ArrayList<String>(); 
    public static ArrayList<String> Distance = new ArrayList<String>(); 
    public static ArrayList<String> Address = new ArrayList<String>(); 
    public static ArrayList<String> Location=new ArrayList <String>(); 
    public static ArrayList<String> State=new ArrayList<String>(); 
    public static ArrayList<String> ZipCode=new ArrayList<String>(); 


    public static ArrayAdapter<String> pfAdapter1; 
    public static ArrayAdapter<String> pfAdapter2; 
    public static ArrayAdapter<String> pfAdapter3; 
    public static ArrayAdapter<String> pfAdapter4; 
    public static ArrayAdapter<String> pfAdapter5; 
    public static ArrayAdapter<String> pfAdapter6; 
    ListView show; 


    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search_results); 
     show= (ListView) findViewById(R.id.lv_pf); 
     pfAdapter1 = new SearchFeedAdapter(SearchFeedActivity.this, R.layout.searchfeed_adapter,BusinessTitle); 
     showData(pfAdapter1); 



    } 
    public void showData(ArrayAdapter<String> adapter){ 
     adapter.notifyDataSetChanged(); 
     show.setAdapter(adapter); 
    } 


} 

我想在兩個rows.I這些textviews希望將這些數據在兩個不同行並保持updated.I不關心這個ArrayAdapter,如果你有任何替代請讓我知道替代品來完成這項任務。

+0

要主持更多compl在ListView中的前視圖中,您需要創建一個自定義適配器。自定義適配器將「擴展」ArrayAdapter,但添加了完全按照需要顯示視圖的功能。這裏有一個很好的教程:http://www.ezzylearning.com/tutorial/customizing-android-listview-items-with-custom-arrayadapter –

回答

0

公共類SubtopicCustomAdapter擴展ArrayAdapter {

int count; 
private Context mContext; 
private ArrayList<SubTopicsModel> listState; 
private SubtopicCustomAdapter myAdapter; 
private boolean isFromView = false; 



public SubtopicCustomAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull ArrayList<SubTopicsModel> objects) { 
    super(context, resource, objects); 
    this.mContext = context; 
    this.listState = objects; 
    this.myAdapter = this; 
} 




@Override 
public View getDropDownView(int position, View convertView, 
          ViewGroup parent) { 
    return getCustomView(position, convertView, parent); 
} 



@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    return getCustomView(position, convertView, parent); 
} 




public View getCustomView(final int position, View convertView, 
          ViewGroup parent) { 

    listState.get(position).setExpert("0"); 
    final ViewHolder holder; 
    if (convertView == null) { 
     LayoutInflater layoutInflator = LayoutInflater.from(mContext); 
     convertView = layoutInflator.inflate(R.layout.subtopic_spinner_adapter, null); 
     holder = new ViewHolder(); 
     holder.mTextView = (TextView) convertView 
       .findViewById(R.id.text); 
     holder.mCheckBox = (CheckBox) convertView 
       .findViewById(R.id.checkbox); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.mTextView.setText(listState.get(position).getTopic_name()); 




    return convertView; 
} 

private class ViewHolder { 
    private TextView mTextView; 
    private CheckBox mCheckBox; 
} 

}

您可以創建自定義的適配器按你自己的願望,所有你需要的是剛剛創建佈局,然後它充氣。

0

首先你交換這兩條線

adapter.notifyDataSetChanged(); 
show.setAdapter(adapter); 

show.setAdapter(adapter); 
adapter.notifyDataSetChanged(); 

有多少ListView`s你有嗎? 1個listview只需要1個適配器。你有這麼多的適配器。

如果您想在適配器中使用CustomModel顯示許多數據。像這樣

public class MyModel { 
public String title; 
public String distance; 
public String address; 
public String location; 
public String state; 
public String zipCode; 

}

而且你AdapterClass

public class SearchFeedAdapter extends ArrayAdapter<MyModel> { 

public int layout; 
public class ViewHolder2 { 
    TextView pf_businessTitle; 
    TextView pf_addressDistance; 
    TextView pf_businessAddress; 
    TextView pf_businessLocation; 
    TextView pf_businessState; 
    TextView pf_businessZipCode; 
} 

// MyEvents myEvents; 
public SearchFeedAdapter(Context context, int resource, List<MyModel> objects) { 
    super(context, resource, objects); 
    layout=resource; 
} 
Context mContext; 



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

    SearchFeedAdapter.ViewHolder2 mainViewHolder=null; 
    mContext = parent.getContext(); 

    LayoutInflater inflater=LayoutInflater.from(getContext()); 
    convertView= inflater.inflate(R.layout.your_layout_with_textviews,parent,false); 

    final SearchFeedAdapter.ViewHolder2 viewHolder=new SearchFeedAdapter.ViewHolder2(); 
    viewHolder.pf_businessTitle =(TextView)convertView.findViewById(R.id.pf_businessTitle); 
    viewHolder.pf_addressDistance =(TextView)convertView.findViewById(R.id.pf_addressDistance); 
    viewHolder.pf_businessAddress=(TextView)convertView.findViewById(R.id.pf_businessAddress); 
    viewHolder.pf_businessLocation=(TextView)convertView.findViewById(R.id.pf_businessLocation); 
    viewHolder.pf_businessState=(TextView)convertView.findViewById(R.id.pf_businessState); 
    viewHolder.pf_businessZipCode=(TextView)convertView.findViewById(R.id.pf_businessZipCode); 
    convertView.setTag(viewHolder); 

    viewHolder.pf_businessTitle.setText(getItem(position).title); 
    viewHolder.pf_addressDistance.setText(getItem(position).distance); 
    viewHolder.pf_businessAddress.setText(getItem(position).address); 
    viewHolder.pf_businessLocation.setText(getItem(position).location); 
    viewHolder.pf_businessState.setText(getItem(position).state); 
    viewHolder.pf_businessZipCode.setText(getItem(position).zipCode); 

    return convertView; 
} 
} 

而且你的活動這樣的

public class SearchFeedActivity extends AppCompatActivity { 

JSONObject jsonObject=new JSONObject(); 

public static ArrayList<MyModel> myModels = new ArrayList<MyModel>(); 



public static ArrayAdapter<String> pfAdapter1; 

ListView show; 


@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_search_results); 
    show= (ListView) findViewById(R.id.lv_pf); 
    loadMyModels(); 
    pfAdapter1 = new SearchFeedAdapter(SearchFeedActivity.this, R.layout.searchfeed_adapter,myModels); 
    showData(pfAdapter1); 



} 

private void loadMyModels() { 

    //Load your data here. It`s dummy object creation 
    for (int i=0;i<10;i++) { 
     MyModel model = new MyModel(); 
     model.title = "title " + i; 
     model.address = "address " + i; 
     model.distance = "distance " + i; 
     model.location = "location " + i; 
     model.state = "state " + i; 
     model.zipCode = "zipcode " + i; 
     myModels.add(model); 
    } 
} 
public void showData(ArrayAdapter<String> adapter){ 
    show.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 
} 
} 

在最終用途RecyclerView代替的ListView在未來

相關問題