0

初心者として、カスタム リストの作成に成功しました。ここにカスタムリストのJavaクラスがあります:そして私はOnClickListenerを実装しました

public class Area_Acre extends ListActivity implements OnClickListener {
String[] stringarray = new String[7];
private EditText editAcre ;
private ListView list ;
private Button buttonConvertAcre;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.area_acre);

    Button buttonConvert = (Button) findViewById (R.id.buttonConvertAcre);
    EditText editAcre = (EditText) findViewById(R.id.editAcre);   
    buttonConvert.setOnClickListener(this);

    setListAdapter(new MyAdapter(this,
            android.R.layout.simple_list_item_1,
            R.id.textView_list,
            getResources().getStringArray(R.array.Area)));
}
private class MyAdapter extends ArrayAdapter<String> {

    public MyAdapter(Context context, int resource, int textViewResourceId,
            String[] strings) {
        super(context, resource, textViewResourceId, strings);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row= inflater.inflate(R.layout.custom_list, parent,false);
        String[] items = getResources().getStringArray(R.array.Area);

        ImageView iv = (ImageView) row.findViewById(R.id.imageView_list);
        TextView tv = (TextView) row.findViewById(R.id.textView_list);

        tv.setText(items[position]);

        if (items[position].equals("Acre")){
            iv.setImageResource(R.drawable.area_acre);
        }

        else if (items[position].equals("Hectar")){
            iv.setImageResource(R.drawable.area_hectar);
        }

        else if (items[position].equals("Square Inch")){
            iv.setImageResource(R.drawable.area_sinch);
        }

        else if (items[position].equals("Square KM")){
            iv.setImageResource(R.drawable.area_skm);
        }

        else if (items[position].equals("Square Meter")){
            iv.setImageResource(R.drawable.area_smeter);
        }

        else if (items[position].equals("Square Mile")){
            iv.setImageResource(R.drawable.area_smile);
        }

        else if (items[position].equals("Square Yard")){
            iv.setImageResource(R.drawable.area_syard);
        }

        return row;
    }

ここに私のオンクリックがありますが、それを行う方法がわかりません。私はテキストビューに値を取得していましたが、今は値を編集テキストからカスタムリストビューに取得したいと考えています

    @Override
public void onClick(View v) {
    if(v.getId() == R.id.buttonConvertHectar){  
        double acre = Double.valueOf (editAcre.getText().toString());
        double hectar = acre * 0.404686;
        double squareinch = acre * 6.273e+6;
        double squarekm = acre * 0.00404686;
        double squaremeter = acre * 4046.86;
        double squaremile = acre * 0.0015625;
        double squareyard = acre * 4840;
    }
        stringarray[0] = acre + "";
        stringarray[1] = hectar+ "";
        stringarray[2] = squareinch+ "";
        stringarray[3] = squarekm+ "";
        stringarray[4] = squaremeter+ "";
        stringarray[5] = squaremile+ "";
        stringarray[6] = squareyard+ "";

}

ここにxmlがあります:

    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/buttonConvertAcre"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginTop="5dp"
        android:minHeight="40dp"
        android:text="@string/Button" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="@dimen/viewline_hight"
        android:layout_marginBottom="@dimen/insideline_marginUpDonw"
        android:layout_marginLeft="@dimen/insideline_marginLeftRight"
        android:layout_marginRight="@dimen/insideline_marginLeftRight"
        android:layout_marginTop="@dimen/insideline_marginUpDonw"
        android:background="@color/inside_line" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="@dimen/linearlayout_marginhight"
        android:layout_marginLeft="@dimen/linearlayout_marginLeftRight"
        android:layout_marginRight="@dimen/linearlayout_marginLeftRight"
        android:gravity="center"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textAcre"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/Acre"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="@dimen/main_text_size" />

        <EditText
            android:id="@+id/editAcre"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="@dimen/layout_marginLeft"
            android:background="@android:color/transparent"
            android:gravity="right"
            android:hint="@string/IYN"
            android:inputType="number"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/red_set"
            android:textSize="@dimen/hint_text_size" />
    </LinearLayout>

    <View
        android:layout_width="fill_parent"
        android:layout_height="@dimen/viewline_hight"
        android:layout_marginBottom="@dimen/insideline_marginUpDonw"
        android:layout_marginLeft="@dimen/insideline_marginLeftRight"
        android:layout_marginRight="@dimen/insideline_marginLeftRight"
        android:layout_marginTop="@dimen/insideline_marginUpDonw"
        android:background="@color/inside_line" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_margin="5dp" >

    </ListView>
</LinearLayout>

カスタム リスト ビュー xml は次のとおりです。

    <ImageView
    android:id="@+id/imageView_list"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginBottom="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="5dp"
    android:src="@drawable/e_incalc" />

<TextView
    android:id="@+id/textView_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="TextView"
    android:textSize="@dimen/main_text_size" />

それだけです...どんな助けにも感謝します、そしてどうもありがとう

これは、アプリが最初にどのように見えるかです..クリック

これが私が望む方法です... edittextとlistviewとボタンを使用するか、結果を自動的に取得できるとよいでしょう。 これは私がリストビューにしたい方法です..クリック

4

2 に答える 2

0

質問が届いたかどうかわかりませんが、onClick() メソッドを使用する方法は次のとおりです。

Button を定義したbuttonConvertAcreので、 onClick メソッドで次のことができます。

@Override
public void onClick(View v) {
    if(v == buttonConvertAcre) {        
        // now you want to receive the value of the edit text as an Double or Integer, right?
        String valueString = editAcre.getText();
        Double value = Double.valueOf(valueString);

        // now do your calculation
        value = value * 0.404686; // I would recommend to use static final variables for calculation

        // now you want to set the result to your TextView, right?
        // make sure your TextView is initialized, e.g.
        // TextView acreResultTextView = findViewById(R.id.acreResultTextView);
        // Note, if you like to change a TextView within your listAdapter, then you can
        // do the calculation in the adapter using the TextView in the adapter at its positon
        // in your case: R.id.textView_list
        acreResultTextView.setText(String.valueOf(value));
    }
}

onClick でを使用したことに注意してください。これにeditAcreは、onCreate() メソッドを変更してこの変数を初期化する必要があります。

private EditText editAcre ;
private ListView list ;
private Button buttonConvertAcre;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.area_acre);

    // now use your private variable defined in the class
    editAcre = (EditText) findViewById(R.id.editAcre);   
    buttonConvertAcre = (Button) findViewById (R.id.buttonConvertAcre);
    buttonConvertAcre.setOnClickListener(this);

    setListAdapter(new MyAdapter(this,
            android.R.layout.simple_list_item_1,
            R.id.textView_list,
            getResources().getStringArray(R.array.Area)));
}

これは、開始するのに役立ちます。

敬具、マイケル

[編集]: ListView およびリスト アダプターの代わりに LinearLayout を使用する場合の解決策を次に示します。

<?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"
    android:padding="5dp" >

    <Button
        android:id="@+id/convertButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="convert"
        android:layout_gravity="right"
        />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Acre:"
            android:layout_marginRight="10dp"
            />
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="enter value"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
        <ImageView 
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/imageAcre"/>
        <TextView 
            android:id="@+id/textViewAcre"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Acre:"/>
        <TextView 
            android:id="@+id/textViewAcreValue"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="1.0283"
            android:gravity="right"/>
    </LinearLayout>

    <!-- Now doing the same for Hectar ... -->
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
        <ImageView 
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/imageHectar"/>
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hectar:"/>
        <TextView 
            android:id="@+id/textViewHectarValue"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="2.024"
            android:gravity="right"/>
    </LinearLayout>

    <!-- Now doing the same for all others. Simply copy the layout and rename the image, the text and the id -->     

</LinearLayout>
于 2013-08-31T16:47:17.767 に答える
0

"textview.Text" 文字列を stringArray に追加します。

Androidのリストビューのコード:-

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
              android.R.layout.yourLayoutName, stringarray);


            // Assign adapter to ListView
            listView.setAdapter(adapter); 

            // ListView Item Click Listener
            listView.setOnItemClickListener(new OnItemClickListener() {

                  @Override
                  public void onItemClick(AdapterView<?> parent, View view,
                     int position, long id) {

                   //Your business logic goes here

                  }

             }); 
        }
于 2013-08-31T16:21:20.290 に答える