初学者成功创建了一个自定义列表。 这是自定义列表的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;
}
这是我的点击,我不知道该怎么做。 我一直把这个值带到textview,现在我想把edittext中的值带到自定义列表视图中
@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" />
就是这样...... 感谢任何帮助, 非常感谢
this is how the app look like at the first place.. Click
这就是我想要的...使用edittext和listview以及一个按钮,或者如果我能自动获得结果会更好。 this is how i want it to be with listview..Click
答案 0 :(得分:0)
将“textview.Text”字符串添加到stringArray。
和android中listview的代码: -
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
}
});
}
答案 1 :(得分:0)
我不确定我是否收到你的问题,但这里是你如何使用onClick()方法
您已经定义了一个按钮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)));
}
这可以帮助您入门。
祝你好运, 迈克尔
[编辑]:使用LinearLayout而不是ListView和列表适配器时,这是一个解决方案。
<?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>