Java 需要帮助将编辑文本值与android中自定义列表视图中的文本视图值相乘吗
我创建了一个带有图像视图、两个文本视图、一个编辑文本视图、一个用于显示品牌名称的字符串值、另一个用于显示忠诚度点数的自定义列表视图、一个用于输入数量的编辑文本,该数量将与文本视图中的忠诚度点数相乘。我尝试将每个列表项中的用户输入值相乘(来自编辑文本)使用文本视图忠诚度点数值,我已经实现了我自己的逻辑乘以它,但它不起作用,我已将我的代码张贴在此处供您参考。如果代码中有任何错误,请更正我 MainActivity.javaJava 需要帮助将编辑文本值与android中自定义列表视图中的文本视图值相乘吗,java,android,Java,Android,我创建了一个带有图像视图、两个文本视图、一个编辑文本视图、一个用于显示品牌名称的字符串值、另一个用于显示忠诚度点数的自定义列表视图、一个用于输入数量的编辑文本,该数量将与文本视图中的忠诚度点数相乘。我尝试将每个列表项中的用户输入值相乘(来自编辑文本)使用文本视图忠诚度点数值,我已经实现了我自己的逻辑乘以它,但它不起作用,我已将我的代码张贴在此处供您参考。如果代码中有任何错误,请更正我 MainActivity.java public class MainActivity extends A
public class MainActivity extends Activity {
ListView lv;
Context context;
static TextView ttv;
ArrayList prgmName;
public static int [] prgmImages={R.drawable.images,R.drawable.images1,R.drawable.images2,R.drawable.images3,R.drawable.images4,R.drawable.images5,R.drawable.images6,R.drawable.images7,R.drawable.images8};
public static String [] prgmNameList={"Britania","Rin","Goodrej","ITC","Nestle","Wheel","Ariel","Tide"};
public static String [] loyal_pts={"10","5","15","25","20","18","30","32"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=this;
ttv= (TextView) findViewById(R.id.tot_point);
lv=(ListView) findViewById(R.id.listView);
lv.setAdapter(new CustomAdapter(this, prgmNameList,prgmImages,loyal_pts));
}
}
CustomAdapter.java
public class CustomAdapter extends BaseAdapter{
String [] result;
String [] Pts;
Context context;
int [] imageId;
int total_points;
String con_pts;
int lyl_pts;
private static LayoutInflater inflater=null;
public CustomAdapter(MainActivity mainActivity, String[] prgmNameList, int[] prgmImages, String[] loyal_pts) {
// TODO Auto-generated constructor stub
result=prgmNameList;
Pts=loyal_pts;
context=mainActivity;
imageId=prgmImages;
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return result.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public class Holder
{
TextView tv;
TextView tv1;
ImageView img;
EditText etxt;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder=new Holder();
View rowView;
// final int total_points,con_pts,lyl_pts;
rowView = inflater.inflate(R.layout.item_list, null);
try{
holder.img=(ImageView) rowView.findViewById(R.id.imageView1);
holder.etxt= (EditText) rowView.findViewById(R.id.edit_txt);
holder.tv=(TextView) rowView.findViewById(R.id.textView1);
holder.tv1= (TextView) rowView.findViewById(R.id.textView2);
holder.tv.setText(result[position]);
holder.tv1.setText(" " + Pts[position] + "pts");
holder.img.setImageResource(imageId[position]);
System.out.println("total points"+total_points);
holder.etxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
try {
lyl_pts = Integer.parseInt(String.valueOf(Pts[position]));
con_pts = holder.etxt.getText().toString().trim();
total_points = lyl_pts * Integer.parseInt(con_pts);
Toast.makeText(context,total_points,LENGTH_LONG).show();
System.out.println("heyy"+total_points);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
catch(Exception e){
e.printStackTrace();
}
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try{
Toast.makeText(context, "You Clicked " + result[position], LENGTH_LONG).show();
}
catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
});
return rowView;
}
}
每当屏幕上显示一个新项目时,就会调用getView()
。在初始阶段,EditText
中不会出现任何内容,因此在getView()
方法中无法从此行中获得预期结果
con_pts=holder.etxt.getText().toString().trim();
我建议要么在etxt
处放置一些初始值,要么将逻辑移到posterextchanged
中,就像这里一样
@Override
public void afterTextChanged(Editable s) {
lyl_pts=Integer.parseInt(String.valueOf(Pts[position]));
con_pts=holder.etxt.getText().toString().trim();
total_points = lyl_pts * Integer.parseInt(con_pts);
System.out.println("total points"+total_points);
}
每当屏幕上显示一个新项目时,就会调用getView()
。在初始阶段,EditText
中不会出现任何内容,因此在getView()
方法中无法从此行中获得预期结果
con_pts=holder.etxt.getText().toString().trim();
我建议要么在etxt
处放置一些初始值,要么将逻辑移到posterextchanged
中,就像这里一样
@Override
public void afterTextChanged(Editable s) {
lyl_pts=Integer.parseInt(String.valueOf(Pts[position]));
con_pts=holder.etxt.getText().toString().trim();
total_points = lyl_pts * Integer.parseInt(con_pts);
System.out.println("total points"+total_points);
}
我无法获得正确的输出,这意味着您当前获得的是什么输出以及您期望的是什么?不,我什么都没有得到
con_pts=holder.etxt.getText().toString().trim();
意味着什么都没有,getView()
是创建列表项的初始阶段。它是空的。在执行此操作之前,您需要设置一些文本。@ShreeKrishna我希望得到相乘的结果,但我没有得到任何结果您必须添加con_pts=holder.etxt.getText().toString().trim()
在你的addTextChangedListener上
然后乘以它。我无法得到正确的输出,这意味着你当前得到的是什么输出以及你期望的是什么?没有我得到的任何东西con_pts=holder.etxt.getText().toString().trim();
没有任何意义,getView()
是创建列表项的初始阶段。它是空的。在执行此操作之前,您需要设置一些文本。@ShreeKrishna我希望得到相乘的结果,但我没有得到任何结果您必须添加con_pts=holder.etxt.getText().toString().trim()
在你的addTextChangedListener上
然后乘以这个。例如,在rin中,我输入5,忠诚点为5,因此总数为25,然后在另一项中,假设britania输入2,忠诚点为10,因此新的总数将为25+20=45,好的,现在如果我从britania中删除值,即2,则为总值一定是25岁了,现在你明白了problem@MBalajivaishnav哦,我真的很抱歉,我没有注意到你的回复,你现在解决了吗?例如,在rin中,我输入了5,忠诚点数是5,所以总数将是25,然后在另一项中,让我们假设britania输入2,忠诚点数是10,所以新的总数将是25+20=45,好的,现在我如果我从britania删除值,即2,则现在的总值必须为25,但仍然显示45,现在u理解了problem@MBalajivaishnav哦,我真的很抱歉,我没有注意到你的答复,你现在解决了吗?