私の活動には、文字列配列のすべての項目を出力するリストビューがありますが、私がしようとしているのは、文字列の最初の部分だけを表示し、次の作業には2番目の部分が必要です。アクティビティがロードされると、part1 | part2が表示されます。私はそれが最初のアクティビティのロードのために働くことができませんが、OnItemClickListenerのために、それは文字列を分割し、part2を別のアクティビティに送ります。文字列配列xmlリストの各項目を分割して新しいarraylistに追加するにはどうすればいいですか?
<string-array name="test">
<item>Dummy1|test1 test2 test3</item>
<item>Dummy2|test4</item>
<item>Dummy3|test5</item>
</string-array>
私は区切り記号 "|"を使用して文字列を分割しています。
String title, sub_category, part1, part2;
Bundle bundle;
String[] sub_category_list, seperated;
ListView listView;
Object sub_cat_name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.subcategory_layout);
bundle = getIntent().getExtras();
title = bundle.getString("selected_category");
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(Color.WHITE);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
sub_category_list = getResources().getStringArray(R.array.test);
(Print out only the first part of each item.
I need a function here that splits each strings)
listView = (ListView) findViewById(R.id.sub_category_list);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.list_single, R.id.txt, sub_category_list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
sub_cat_name = listView.getItemAtPosition(position);
seperated = sub_cat_name.toString().split("\\|");
part1 = seperated[0];
part2 = seperated[1];
sub_category = sub_cat_name.toString();
Toast.makeText(SubCategory.this, "You clicked at : " + (part2) + (position), Toast.LENGTH_SHORT).show();
}
});
}
forループを使用して、すべての最初の部分を新しいArrayListに追加しようとしました。
public ArrayList<String> newList;
sub_category_list = getResources().getStringArray(R.array.popular);
for (String i : sub_category_list){
String[] split1 = i.split("\\|");
String abc = split1[0];
String def = split1[1];
newList.add(abc);
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.list_single, R.id.txt, newList);
listView.setAdapter(adapter);
正確な問題は何ですか? –