2016-10-14 4 views
3

トグルボタンとチェックリストで表される2つのブール値のようなデータを取得し、図1のようなスクロールビューのすべてのデータを取得するデータベースを作成します。また、スクロールビューの同じエントリに「削除」と「更新」ボタンを追加したいと思います。アンドロイドのスクロールビューのエントリに多くのオブジェクトを配置する方法は?

ScrollViewで作成されたLinearLayoutを縦に配置することができます。この方法で、テキストとボタンを同じ行に配置できます。しかし、私がそうするとき、私はトグルとチェックボックスの情報のための別の行を追加することはできませんまた、私はエントリ全体に共通の背景を置くことはできません。

誰でも私にこの問題にどのように対処すればよいかのヒントを教えてください。私はxmlのメインレイアウトでそれを解決しようとしましたが、それをコードに変換するアイデアを得るだけですが、それを動作させることはできません。

enter image description here

+1

ビューを繰り返しているので、私は(https://developer.android.com/reference/android/widgetそれはあなたが[リストビュー]にデータを置くことがより理にかなっていると考えています/ListView.html)。 – MohanadMohie

+1

または 'RecyclerView' => https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html – xAqweRx

答えて

1

あなただけのすべてのリスト項目のコンテナとして別のLinearLayoutを追加する必要があります。

- ScrollView 
    - LinearLayout (vertical) -> List container 
     - LinearLayout (vertical) -> Item container 
      - LinearLayout (horizontal) 
       ...some elements.... 
      - End of LinearLayout (horizontal) 
      - LinearLayout (horizontal) 
       ...more elements.... 
      - End of LinearLayout (horizontal) 
     - End of LinearLayout (vertical) -> Item container 
     ...More item containers... 
    - End of LinearLayout (vertical) -> List container 
- End of ScrollView 

これはあなたのイメージのように正確なレイアウトはありませんが、あなたはこのパターンに従って、それを解決する必要があります。

これにもかかわらず、他の人がコメントで述べたように、これはListViewまたはより良いRecyclerViewを使用してより効率的な方法で達成できます。

今実際の例を示すことはできません。必要に応じて後でやります。

0

コメントや回答として回答してもらえませんか?私は@AlbertoMéndezの答えに続き、コメントに応じてリストに変更しました。私は解決策があると思っていますが、まだ見栄えを良くするために作業する必要がありますが、構造は私がやろうとしていたものです。 auxiliary_list.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" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background_gradient"> 

    <LinearLayout 
     android:layout_width="255dp" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/main_name_list" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Title_entry" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:textStyle="bold" /> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 
       <CheckBox 
        android:id="@+id/checkbox_list" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Checkbox" 
        android:clickable="false" /> 
       <Switch 
        android:id="@+id/switch_button_list" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textOff="Text off" 
        android:textOn="Text on" 
        android:clickable="false" /> 

      </LinearLayout> 

     </LinearLayout> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_gravity="center"> 

     <Button 
      android:layout_width="5dp" 
      android:layout_height="30dp" 
      android:id="@+id/update_entry_list" 
      android:background="@android:drawable/ic_menu_edit" 
      android:layout_weight="0.5" 
      android:height="10dp" /> 
     <Button 
      android:layout_width="5dp" 
      android:layout_height="30dp" 
      android:id="@+id/delete_entry_list" 
      android:background="@android:drawable/ic_delete" 
      android:layout_weight="0.5" 
      android:height="10dp"/> 

    </LinearLayout> 

</LinearLayout> 

</LinearLayout> 

主activity.xml:例で満たさ

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:padding="@dimen/screen_padding" 
android:orientation="vertical" 
android:gravity="center_horizontal" 
android:background="@drawable/background_gradient"> 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="@style/title" 
    android:id="@+id/manage_exercises_title" 
    android:text="@string/title"/> 

<Space 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/content_spacing" /> 

<ListView 
    android:id="@+id/list_1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" > 

</ListView> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end|bottom" 
    android:layout_margin="10dp" 
    android:src="@android:drawable/ic_input_add" /> 
</LinearLayout> 

Javaコード:

package com.example.nck.routine_tracker; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.CheckBox; 
import android.widget.ListView; 
import android.widget.Switch; 
import android.widget.TextView; 
import android.widget.Toast; 
import java.util.Arrays; 
/** 
* Created by nck on 14/10/16. 
*/ 
public class MainJavaFile extends Activity{ 
ListView list; 
String [] text = new String[20]; 
boolean [] option1 = new boolean[20];; 
boolean [] option2 = new boolean[20]; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity_xml); 
    for (int i=0;i<20;i++){ 
     text[i]=""+ i + "º Entry"; 
    } 
    list = (ListView) findViewById(R.id.list_1); 
    list.setAdapter(new listAdapter(text,option1,option2, this.getBaseContext())); 
    Toast.makeText(this, text[0],Toast.LENGTH_LONG).show(); 
} 
} 
class listAdapter extends BaseAdapter { 
String[] text; 
boolean[] option1, option2; 
Context context; 
LayoutInflater inflater; 
public listAdapter() { 
    text = null; 
    option1 = null; 
    option2 = null; 
} 
public listAdapter(String[] text, boolean[] option1, boolean[] option2, Context context) { 
    this.text = text; 
    this.option1 = option1; 
    this.option2 = option2; 
    this.context= context; 
} 
public int getCount() { 
    // TODO Auto-generated method stub 
    return text.length; 
} 
    public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 
public View getView(int position, View convertView, ViewGroup parent) { 

    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View row; 
    row = inflater.inflate(R.layout.auxiliary_list, parent, false); 
    TextView Text; 
    CheckBox Option1; 
    Switch Option2; 
    Text = (TextView) row.findViewById(R.id.main_name_list); 
    Option1 = (CheckBox) row.findViewById(R.id.checkbox_list); 
    Option2 = (Switch) row.findViewById(R.id.switch_button_list); 
    Text.setText(text[position]); 
    Option1.setChecked(option1[position]); 
    Option2.setEnabled(option2[position]); 
    return (row); 
} 

}

そしてソリューション: Solution

+0

あなたがそれを聞いてうれしいです –

関連する問題