Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要帮助将编辑文本值与android中自定义列表视图中的文本视图值相乘吗_Java_Android - Fatal编程技术网

Java 需要帮助将编辑文本值与android中自定义列表视图中的文本视图值相乘吗

Java 需要帮助将编辑文本值与android中自定义列表视图中的文本视图值相乘吗,java,android,Java,Android,我创建了一个带有图像视图、两个文本视图、一个编辑文本视图、一个用于显示品牌名称的字符串值、另一个用于显示忠诚度点数的自定义列表视图、一个用于输入数量的编辑文本,该数量将与文本视图中的忠诚度点数相乘。我尝试将每个列表项中的用户输入值相乘(来自编辑文本)使用文本视图忠诚度点数值,我已经实现了我自己的逻辑乘以它,但它不起作用,我已将我的代码张贴在此处供您参考。如果代码中有任何错误,请更正我 MainActivity.java public class MainActivity extends A

我创建了一个带有图像视图、两个文本视图、一个编辑文本视图、一个用于显示品牌名称的字符串值、另一个用于显示忠诚度点数的自定义列表视图、一个用于输入数量的编辑文本,该数量将与文本视图中的忠诚度点数相乘。我尝试将每个列表项中的用户输入值相乘(来自编辑文本)使用文本视图忠诚度点数值,我已经实现了我自己的逻辑乘以它,但它不起作用,我已将我的代码张贴在此处供您参考。如果代码中有任何错误,请更正我

MainActivity.java

   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哦,我真的很抱歉,我没有注意到你的答复,你现在解决了吗?