NullPointerException异常多列列表 [英] nullPointerException in multi column list

查看:129
本文介绍了NullPointerException异常多列列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经试过所以从类似的问题的参考,但一直没有得到相应的解决方案。

我想从网页获取的数据和格式显示出来,包括有4列行。

I'm trying to fetch the data from a webpage and display it in format consisting of rows having 4 columns.

在网页数据present:

Data present on webpage:

sbin目录; 1916.00; 1886.85; 1.54@LT; 1315.50; 1310.30; 0.40@TCS; 1180.00; 1178.00; 0.17@AXISBANK; 1031.30; 1005.95; 2.52@MARUTI; 1000.35; 992.35; 0.81@PNB ; 931.90; 916.35; 1.70@GAIL; 400.00; 398.45; 0.39 @

我想diaplay它的形式

I want to diaplay it in the form

SBIN.........1916.00.....1886.85.....1.54

LT...........1315.50.....1310.30.....0.40  and so on. 

请注意,我不想点,我想每个值是行内一个单独的列。

Note that I don't want dots, I want each value to be a separate column within a row.

我的数据由7行。

当我运行低于code,我得到这个输出 即。

When I run the below code, I get this output i.e.

 values[0]   values[1]   values[2]   values[3]

 values[1]   values[2]   values[3]   values[4]

 values[2]   values[3]   values[4]   values[5]

(它打印所有4 COLS第1行,那么COL第一排和第二排的COL1 2-4,然后列数3-4第一排和第二排的COL 1-2的等等...)

(It prints all 4 cols of 1st row, then col 2-4 of 1st row and col1 of 2nd row, then cols 3-4 of 1st row and col 1-2 of 2nd row and so on...)

ReadWebpageAsyncTask.java

public class ReadWebpageAsyncTask extends Activity {
    private EditText ed;
    private ListView lv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ed = (EditText) findViewById(R.id.ed);
        lv = (ListView) findViewById(R.id.list);
        DownloadWebPageTask task = new DownloadWebPageTask();
        task.execute(new String[] { "http://abc.com/default.aspx?id=G" });
    }

    private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
            String response = "";
            for (String url : urls) {
                DefaultHttpClient client = new DefaultHttpClient();
                HttpGet httpGet = new HttpGet(url);
                try {
                    HttpResponse execute = client.execute(httpGet);
                    InputStream content = execute.getEntity().getContent();

                    BufferedReader buffer = new BufferedReader(
                            new InputStreamReader(content));
                    String s = "";
                    while ((s = buffer.readLine()) != null) {
                        response += s;
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return response;
        }

        @Override
        protected void onPostExecute(String result) {
            int sub = result.lastIndexOf('@', result.length() - 1);
            String s1 = result.substring(0, sub + 2);
            String temp[];
            String subarr[] = new String[100];
            ;
            Log.v("data = ", s1);
            // String s = s1.replace(";", " - ");
            final String arr[] = s1.split("@");

            for (int i = 0; i < arr.length; i++) {
                Log.v("arr" + i, arr[i] + "    " + arr.length);
            }

            for (int i = 0; i < arr.length - 1; i++)

            {
                temp = arr[i].split(";");
                subarr[(4 * i)] = temp[0];
                subarr[(4 * i) + 1] = temp[1];
                subarr[(4 * i) + 2] = temp[2];
                subarr[(4 * i) + 3] = temp[3];
                        }
        lv.setAdapter(new MyAdapter(ReadWebpageAsyncTask.this, subarr));
        }
    }
}

的main.xml

            <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <EditText android:id="@+id/ed" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="Search">
    </EditText>

    <ListView android:id="@+id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    </ListView>

    </LinearLayout>

MyAdapter.java

   public class MyAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] values;

    private String item1, item2, item3, item0;
    int x = 0, i = 1, y = 1;

    public MyAdapter(Context context, String[] values) {
        super(context, R.layout.row, values);
        this.context = context;
        this.values = values;
    }

    @Override
    public String getItem(int position) {
        return values[position];
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.row, parent, false);
        TextView tv1 = (TextView) rowView.findViewById(R.id.col1);
        TextView tv2 = (TextView) rowView.findViewById(R.id.col2);
        TextView tv3 = (TextView) rowView.findViewById(R.id.col3);
        TextView tv4 = (TextView) rowView.findViewById(R.id.col4);

        if (y < 8) {
            item0 = getItem(position);
            Log.v("pos = ", "" + position);
            item1 = getItem(position + 1);
            item2 = getItem(position + 2);
            item3 = getItem(position + 3);

            tv1.setText(item0);
            tv2.setText(item1);
            tv3.setText(item2);
            tv4.setText(item3);

        } else {
            Log.v("y= ", "" + y);
        }
        return rowView;
    }
}

row.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="horizontal" >

             <TextView android:id="@+id/col1"
             android:layout_width="150dip"
             android:layout_height="wrap_content"/>

             <TextView android:id="@+id/col2"
             android:layout_width="70dip"
             android:layout_height="wrap_content"/>

              <TextView android:id="@+id/col3"
             android:layout_width="70dip"
             android:layout_height="wrap_content"/>

              <TextView android:id="@+id/col4"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"/>

    </LinearLayout>

任何帮助APPRICIATED

推荐答案

尝试使用的ListView

Try using ListView

相反TableLayout中添加ListView控件到你的XML,并将在新的XML表上的内容 通过扩展ArrayAdapter创建一个适配器,在你的ListView设置此适配器。

Instead of TableLayout add ListView to your xml and place the content on table in new xml Create an adapter by extending ArrayAdapter and set this adapter on your listView.

这篇关于NullPointerException异常多列列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆