2017-05-22 15 views
0

私は、複数のボタンを動的に表示したい、各行に2つのボタン。 tablerowを試して、linearLayoutを入れましたが、uttonは表示されませんでした。私がこれまでにやったことは、私にボタンの下のボタンを与え ... that's what i want to achieve 無効読み取り(){アンドロイドの各行に2つのボタンを追加するにはどうすればいいですか?

File file = getCacheDir(); 
    File file1 = new File(file,"favoris.txt"); 
    BufferedReader reader; 
    FileInputStream fileInputStream = null; 
    try { 

     fileInputStream = new FileInputStream(file1); 
     StringBuffer stringBuffer = new StringBuffer(); 
     reader = new BufferedReader(new InputStreamReader(fileInputStream)); 
     String line=reader.readLine(); 
     while (line != null) { 
      LinearLayout mainLinear=(LinearLayout) findViewById(R.id.mainLinear); 
      LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
      ImageButton ib=new ImageButton(this); 
      Button b=new Button(this); 
      b.setLayoutParams(params); 
      ib.setLayoutParams(params); 
      final int id=Integer.parseInt(line); 
      b.setId(id); 
      //ib.setId(id); 
      line = reader.readLine(); 
      b.setText(line); 
      line = reader.readLine(); 
      b.setText(b.getText()+"\n"+line); 
      line = reader.readLine(); 

      Picasso.with(this).load("https://omaimaelair.000webhostapp.com/images/img"+id+".jpg").into(ib); 

      mainLinear.addView(b); 
      mainLinear.addView(ib); 

      b.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(FavorisActivity.this,id+"", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 

    ... 
+0

私の回答は役に立ちましたか? – Barns

答えて

0

あなたのR.id.mainLinearからLinearLayoutを使用しています。このレイアウトの向きがverticalの場合、次のボタンの下に各ボタンが表示されます。また、各繰り返しで新しいR.id.mainLinearを追加しています。メインのレイアウトは、ループが呼び出される前に呼び出される必要があるはずです(while)。

LinearLayout(垂直)内にLinearLayout(水平)を使用してください。水平にボタンを追加しますLinearLayout。それは問題を修正するはずです。

これで問題は解決するはずですが、ListViewを使用してボタンのカスタム表示を定義することを検討する必要があります。データアダプタを使用して、ボタンに必要な情報を入力します。あなたは、外観と機能をより詳細に制御できます。将来的にコードを変更する方がずっと簡単です。

最後に、ファイルのデータを今のところ読んでいないことをお勧めします。 whileステートメントの有効性を確認する前に、3つの.readLineコールがあります。これによりエラーが発生する可能性があります。

関連する問題