2017-11-14 21 views
0

ListViewが空です。 Logcatにはエラーはありません。アプリケーションは、Webサイトからデータを読み取ることができます。私は "Log.i(" String "、readLine.toString());でチェックしました;"コマンド。.setAdapterが機能しません。

String gamehost = "https://example.com"; 

private SharedPreferences speicher; 
private SharedPreferences.Editor editor; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_worldhighscore); 
    speicher = getApplicationContext().getSharedPreferences("Data", 0); 
    editor = speicher.edit(); 

    String userid = speicher.getString("userid", null); 


    ArrayList<String> strArray; 
    strArray = new ArrayList<String>(); 
    ArrayAdapter<String> stradapt; 
    String quellcodee = null; 
    URL urle = null; 

    ListView listView = (ListView) findViewById(R.id.listviewuser); 
    try { 
     urle = new URL(gamehost + "/highscoreread.php"); 
     String readLine = null; 
     BufferedReader buffReader = new BufferedReader (new InputStreamReader(urle.openStream())); 
     while ((readLine = buffReader.readLine()) != null) { 
      strArray.add(readLine); 
      Log.e("Data", readLine.toString()); 
     } 
    } 
    catch (MalformedURLException me) { 
     me.printStackTrace(); 
    } 
    catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 

    stradapt = new ArrayAdapter<String>(Worldhighscore.this, android.R.layout.simple_list_item_1, strArray); 
    listView.setAdapter(stradapt); 
    Log.e("Datas", strArray.toString()); 
} 

Logcat: I /データ:1305957942849692から18 I /データ:1587261998061410から10 I /データ:88030から4 I/DATAS:[1305957942849692から18、1587261998061410から10、88030 - 4]

R.layout.activity_worldhighscore:

<ListView 
    android:id="@+id/listviewuser" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="56dp" 
    android:headerDividersEnabled="false" 
    android:scrollbars="horizontal" 
    android:visibility="visible" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    tools:layout_constraintLeft_creator="1" 
    tools:layout_constraintRight_creator="1" /> 

編集:T彼はコードが変更されます。

+0

ここで、このコードをすべて入れますか? 'onCreate'の中に? – pleft

+0

はいこのコードのすべてはonCreateに配置されます – DavidsProTv

+0

あなたの問題は何ですか?ヌルポインタ? logcatエラーログを表示してください –

答えて

0

デフォルトのアダプタ

を使用する場合は、この

stradapt = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, strArray); 

の代わりを置くこの

public class Adapter extends ArrayAdapter { 
    List arr; 
    int resource; 
    Context context; 
    public Adapter(Context context, int resource, List arr) { 
     super(context, resource, arr); 
     this.arr=arr; 
     this.resource=resource; 
     this.context=context; 
    } 
    @Override 
    public View getView(final int position, View view, ViewGroup parent) { 
     View rowView; 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     rowView = inflater.inflate(R.layout.layout_adapter, parent, false); 
     TextView param1=(TextView)rowView.findViewById(R.id.param1); 
     TextView param2=(TextView)rowView.findViewById(R.id.param2); 
     final ArrayList<Class.MyOBJECT> data=(ArrayList<Class.MyOBJECT>)arr; 
     param1.setText(data.get(position).param1); 
     param2.setText(data.get(position).param2); 

     return rowView; 
    } 
} 

...

Adapter adapter=new Adapter(this,R.layout..,arr); 
ListView.setAdapter(adapter); 

とも次のアプローチを使用して試してみてください

stradapt = new ArrayAdapter<String>(Worldhighscore.this, android.R.layout.simple_list_item_1, strArray); 
+0

これはカスタムアダプタです。公式の文書https://developer.android.com/guide/topics/uiによると、デフォルトの' ArrayAdapter'を使用することを選択しました。 /declaring-layout.html#AdapterViews彼がしたことは有効です – pleft

+1

@pleft私は感謝を参照してください –

+0

答えのどの部分が問題の解決策でしたか? 'Worldhighscore.this' - >' this'部分かカスタムアダプター? – pleft

関連する問題