2012-03-28 17 views
0

を働いていない私は、コードは、AndroidチャットアプリのListViewが

package cyclist.project; 

import java.util.ArrayList; 
import java.util.List; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import org.json.JSONTokener; 

import cyclist.Utility.AppLog; 
import cyclist.Utility.common; 
import cyclist.Utility.webService; 
import cyclist.bean.discussion_item; 
import cyclist.dal.Attributes; 
import cyclist.dal.DBHelper; 
import cyclist.dal.DBService; 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class user_discussion extends Activity{ 

    ListView events; 
    ArrayList<discussion_item> list; 
    static EditText et; 
    Button btn; 

    webService webService; 
    cyclist.Utility.common common; 
    DBService dbService; 
    DBHelper dbHelper; 
    Attributes attributes; 

    public void onCreate(Bundle savedInstanceState) { 

     webService = new cyclist.Utility.webService(this); 
     common = new common(); 
     dbHelper = new DBHelper(this); 
     dbService = new DBService(dbHelper); 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.user_discussion); 
     events = (ListView) findViewById(R.id.lv_user_discussion_list); 
     et = (EditText) findViewById(R.id.lv_list_events_listT); 
     btn = (Button) findViewById(R.id.lv_list_events_list); 
     list = new ArrayList<discussion_item>(); 

     showTime(); 
     setList(); 

     events.setAdapter(new ListAdapter(user_discussion.this, list)); 
     // new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list) 
    } 

    public void register(View view) { 
     Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER"); 
     intent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); 
     intent.putExtra("sender", "[email protected]"); 
     startService(intent); 
     et.setText(""); 
    } 

    public void showTime() { 
//  ListAdapter la = new ListAdapter(user_discussion.this, list); 
//  la.notifyDataSetChanged(); 
//  SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
//  String string = prefs.getString(AUTH, "n/a"); 
//  Toast.makeText(this, string, Toast.LENGTH_LONG).show(); 
//  Log.d("C2DM RegId", string); 

    btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 
      String url = common.setChatInUrl(et.getText().toString()); 
      AppLog.logString("url= "+ url); 
      String response = webService.getWebResponse(url);    
      setList(); 
      et.setText(""); 
      // register(btn); 
      } 
     }); 
    } 

    private void setList(){ 
     JSONObject json; 
     try { 
      json = new JSONObject(JSON.getJSONfromURL("http://myservices/ws_cyc/events_service.php?action=get_chats")); 
      JSONArray miles = json.getJSONArray("cyc"); 
      JSONObject rec; 
      JSONObject rec2 = null; 
      discussion_item item = null; 

       for (int i=0; i<miles.length(); i++){ 
        rec = miles.getJSONObject(i); 
        rec2 = rec.getJSONObject("cycObject"); 
        item = new discussion_item(rec2.getString("Chats").toString()); 
        list.add(item); 
       }         
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
    } 

    @SuppressWarnings("unused") 
    private class ListAdapter extends ArrayAdapter<discussion_item> { 

     private LayoutInflater inflater; 

     public ListAdapter(Context context, List<discussion_item> list) { 
      super(context, R.layout.user_discussion_left_item, R.id.txt_event_item_title, list); 
      inflater = LayoutInflater.from(context);  // Cache the LayoutInflate to avoid asking for a new one each time. 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      ViewHolder holder; 
//   TextView textView;   
      discussion_item event = (discussion_item) this.getItem(position); 
      AppLog.logString(String.valueOf(position)); 
      holder = new ViewHolder(); 

      if (convertView == null) { 
       if(position%2 == 0){ 
        convertView = inflater.inflate(R.layout.user_discussion_left_item, null); 
        holder.textView = (TextView) convertView.findViewById(R.id.txt_event_item_title); 
        holder.textView.setText(event.getTitle()); 
       } 
       else{ 
        convertView = inflater.inflate(R.layout.user_discussion_right_item, null); 
        holder.textView = (TextView) convertView.findViewById(R.id.txt_event_item_title); 
        holder.textView.setText(event.getTitle()); 
       }     
      } 
      return convertView;   
     } 
     } 

    public void NavigateToResult(Context context, Class<?> targetClass) { 
      Intent intent = new Intent(context, targetClass); 
      startActivity(intent); 
      finish(); 
     } 
     @Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) 
     { 

      if (keyCode == KeyEvent.KEYCODE_BACK) 
      { 
       NavigateToResult(this, login.class); 
        return false;   
      } 
      else 
       return super.onKeyDown(keyCode, event); 


     } 
     static class ViewHolder 
     { 
      public TextView textView; 
      //ImageView imgIcon; 
     } 
} 

を以下している私は、チャットのリストを取得するために、PHP JSON Webサービスを使用しています。問題は、私のカスタムリストが正しく表示されていないことです。つまり、チャットの4行しか表示されていません。

0 - hello 1 - hi 2 - how ru? 3 - 罰金。

残りは

4すなわち、表示されていない

- ウル今日の計画 5 Rどのような - の代わりに4-以降の表示のように何も 6 ... ...

を、それを0〜3回のインデックスチャットを繰り返しています。 助けてください。どこで私は間違っているのですか? WebブラウザでWebサービスを実行してデバッグすると、チャットの完全なリストが返されます。

+1

このウェブサイトは、特定の問題について具体的な質問をするためのものです:ループの外で、この問題は

使用を発生します。あなたは他の人にあなたのために仕事をするように求めています。スコア1、受け入れられていない回答、およびあなたが何を問題と考えるかの兆候なしで、ほとんどの人はあなたを助ける時間を取らないでしょう。 –

答えて

0

@ Ollie C 事実を指摘するためのThanx ...他のユーザー@code.google.comが私の質問を解決するのを助けました..私が尋ねた唯一のことは、間違いをしているかどうかではありませんでした漠然とですが、その天才は私はそれが私がgetViewメソッド()方法でミスを作っていたことが判明し、私のListAdapterクラス

を再確認する必要があることを教えてくれました。

もう一度アドバイスをいただき、ありがとうございます。

0

JSONObjectを作成した場合は、各オブジェクトのエビルタイムをループ開始 にする必要があります。

for(int i=0; i<miles.length(); i++){ 
       JSONObject rec = miles.getJSONObject(i); 
       JSONObject rec2 = rec.getJSONObject("cycObject"); 
       item = new discussion_item(rec2.getString("Chats").toString()); 
       list.add(item); 

      }