将[char]数组转换为String,然后在Android中添加到ListView?

时间:2014-07-25 17:18:26

标签: java android listview

我是Java和Android编程的新手。对于Android项目,我需要在String中转换两个字符的数组,然后将结果添加到ListView中。

这两个字符来自一个for循环,代表一对从“AA”到“ZZ”的字符。我使用for循环生成一个字母的ASCII码。

btn_MANAGER_SlaveRefresh.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new Thread(new Runnable() {
            public void run() {
                char[] AdrBuffer = null;
                final String txt_Adr = "ZZ";

                for (byte MSB_Adr = 65; MSB_Adr <= 90; MSB_Adr++) {
                    for (byte LSB_Adr = 65; LSB_Adr <= 90; LSB_Adr++) {
                        AdrBuffer[0] = (char)MSB_Adr;
                        AdrBuffer[1] = (char)LSB_Adr;
                        txt_Adr.copyValueOf(AdrBuffer);

                        runOnUiThread(new Runnable() {
                            public void run() {
                                adapter_lst_MANAGER_SlaveActive.add(txt_Adr);
                            }
                        });
                    }
                }   
            }
        }).start();
    }
});

当我点击按钮时,应用程序会停止并关闭。

你能帮我弄清楚出了什么问题吗?

2 个答案:

答案 0 :(得分:1)

使用StringBuilder

StringBuilder builder = new StringBuilder();
builder.append((char)MSB_Adr);
builder.append((char)LSB_Adr);

String txt_Adr = builder.toString();

希望这会有所帮助

答案 1 :(得分:0)

我对您的代码做了一些更改,最终,它工作了!你在一个单独的线程中包含了while循环,这很好但是.copyValueOf()方法可能会导致一些问题。我在下面提供了您的代码的精炼版本。

public class MainActivity extends Activity implements Runnable {


private ListView lv;


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


    lv = (ListView) findViewById(R.id.listView1);

    Thread thread = new Thread(this);
    thread.start();





    }

    @Override
    public void run() {
    // TODO Auto-generated method stub
     final ArrayAdapter<String> adapter;
     adapter = new ArrayAdapter<String>(this, R.layout.list, R.id.name);
        int j=65;
        for(int i=0;i<=25;i++) {


            char one=(char) j;

           adapter.add(""+one+one);

            j++;

        }
        lv.setAdapter(adapter);

        }
  }

如果有效,请告知我们,如果您对代码有任何疑问,请与我们联系。干杯!