2013-06-30 92 views
2

我試圖通過PHP將數據從MySQL數據庫綁定到ListView中的Android RatingBar。使用SQLite,我可以使用SimpleCursorAdapter,但是由於PHP返回JSONArray,因此我將數據加載到HashMap中,並且無法弄清楚如何將該數據綁定到RatingBar。我已經嘗試過這樣的代碼:Android將數據綁定到ListView而不使用光標

class MyBinder implements ViewBinder{ 
@Override 
public boolean setViewValue(View view, String data, String textRepresentation) { 
if(view.getId() == R.id.ratingBar){ 
    String stringval = data; 
    float ratingValue = Float.parseFloat(stringval); 
    RatingBar ratingBar = (RatingBar) view; 
    ratingBar.setRating(ratingValue); 
    return true; 
    } 
    return false; 
    } 
} 


     ListAdapter simpleadapter = new SimpleAdapter(getApplicationContext(), values, R.layout.review_info, columns, toView); 
     simpleadapter.setViewBinder(new MyBinder()); 
     listview.setAdapter(simpleadapter); 

不幸的是,我得到一個編譯時錯誤說setViewBinder不ListAdapter的方法,並建議我投它作爲一個SimpleCursorAdapter。那麼如何在沒有遊標的情況下綁定數據呢?或者我如何從MySQL獲取遊標?由於

最終工作代碼:

public class MyArrayAdapter extends ArrayAdapter<Locations>{ 
Context context; 
ArrayList<Locations> data; 
int resource; 




public MyArrayAdapter(Context context, int resource, ArrayList<Locations> data 
    ) { 
    super(context, resource, data); 
    this.context = context; 
    this.data = data; 
    this.resource = resource; 
} 



    static class ViewHolder { 
    public TextView text; 
    public RatingBar ratingbar; 
    } 



    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    View rowView = convertView; 
    ViewHolder viewHolder; 
    Locations l = data.get(position); 

    if (rowView == null) 
    { 
    viewHolder = new ViewHolder(); 
    LayoutInflater inflater = (LayoutInflater)  context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    //get review_info which is the info inside list_review 
    rowView = inflater.inflate(R.layout.review_info, null); 
    viewHolder.text = (TextView) rowView.findViewById(R.id.displayReview); 
    viewHolder. ratingbar = (RatingBar) rowView.findViewById(R.id.ratingReview); 
    rowView.setTag(viewHolder); 


} 
else 
{ 
    viewHolder = (ViewHolder) rowView.getTag(); 
} 

viewHolder.text.setText(l.getReview()); 
viewHolder.ratingbar.setRating(l.getClean()); 

    return rowView; 
    } 
} 

回答

0

您綁定您的數據,同時建立行認爲,在適配器的getView()方法:

+0

感謝我無法解決getView問題()。現在我收到一個新的錯誤,不知道爲什麼。我有一切發佈在UPDATE下。謝謝 – KarlCobb

+0

'R.layout.review_info'中有什麼? –

+0

嘿似乎現在工作。我觀看了這段視頻:http://www.youtube.com/watch?v=wDBM6wVEO70&feature=youtu.be – KarlCobb

相關問題