2016-01-24 41 views
0

我想設置5個字符串,airport_finish,date_finish,time_finish,persons_finish,address_finish & flightnr_finish,在ListView的一個項目中,該項目與擴展片段的類DemandFragment相關聯。如何將5個不同的字符串設置爲ListView的一個項目?

有可能嗎?我該怎麼做?

現在所有的字符串都在單獨的項目中。

FinishPostFragment:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.add_post_finish: 
      // User chose the "Favorite" action, mark the current item 
      // as a favorite... 
      final FragmentManager fm = getActivity().getFragmentManager(); 
      final Fragment fragment = new DemandFragment(); 

      // put strings to listview in DemandFragment 
      ParseObject post = new ParseObject("Posts"); 

      post.put("airport", airport_finish.getText().toString()); 
      post.put("date", date_finish.getText().toString()); 
      post.put("time", time_finish.getText().toString()); 
      post.put("persons", persons_finish.getText().toString()); 
      post.put("address", address_finish.getText().toString()); 
      post.put("flightnr", flightnr_finish.getText().toString()); 

      post.saveInBackground(new SaveCallback() { 
       @Override 
       public void done(ParseException e) { 
        airport_finish.setText(""); 
        date_finish.setText(""); 
        time_finish.setText(""); 
        persons_finish.setText(""); 
        address_finish.setText(""); 
        flightnr_finish.setText(""); 

        ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts"); 
        query.findInBackground(new FindCallback<ParseObject>() { 
         public void done(List<ParseObject> scoreList, ParseException e) { 
          if (e == null) { 
           ArrayList arrayPost = new ArrayList<String>(); 

           for (ParseObject j : scoreList) { 

            arrayPost.add(j.getString("airport")); 
            arrayPost.add(j.getString("date")); 
            arrayPost.add(j.getString("time")); 
            arrayPost.add(j.getString("persons")); 
            arrayPost.add(j.getString("address")); 
            arrayPost.add(j.getString("flightnr")); 
           } 

           Bundle bundle = new Bundle(); 
           bundle.putStringArrayList("listPost", arrayPost); 
           fragment.setArguments(bundle); 
           fm.beginTransaction().replace(R.id.content_main, fragment).commit(); 

          } else { 
           // error 
          } 
         } 
        }); 
       } 
      }); 

      return true; 

DemandFragment:

public class DemandFragment extends Fragment { 

    ListView lv; 

    ArrayList yourList; 
    ArrayAdapter adapter; 

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

     if(rootView != null){ 
      lv = (ListView) rootView.findViewById(R.id.listDemand); 

      ArrayList<String> arraypost = getArguments().getStringArrayList("listPost"); 
      Log.d("arraylist", "arraypost"); 

      ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, arraypost); 

      lv.setAdapter(adapter); 

      lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        // clicked on item show post 

       } 
      }); 
     } 

     return rootView; 
    } 

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

     setHasOptionsMenu(true); 

    } 

} 
+0

我的問題清楚了嗎? – Rang92

+1

你如何看待它? – Szymon

+0

只是一個簡單的行,在彼此之上。 – Rang92

回答

1

你想要做的是爲你ListView創建一個自定義項目。

然後你可以自定義行怎麼過你想要的xml:

<?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="match_parent" 
    android:orientation="vertical" > 

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Header"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/text"/> 


</LinearLayout> 

這將看起來像:

enter image description here

你的情況,你將有隻有5 textviews。 ..

這是您如何做的: https://stackoverflow.com/a/15832564/3180983

您需要擴展BaseAdapter並重寫一些方法才能使其工作。

相關問題