我正在尝试编写一个列表,其中包含一些可扩展的项目和一些单项.我希望这样,当单击一个项目或可扩展列表子项时,我可以根据项目的文本调用intent.
我认为可扩展列表可以工作,但有没有办法在可扩展列表中设置项目,以便它们没有可扩展列表图标?我应该使用字符串数组以外的东西吗?
做这个的最好方式是什么?
谢谢
下面是我不完整的代码,我想在"亚特兰大"和"波士顿"之间插入项目"区域1","区域2","区域3"或作为亚特兰大的子集:
package test.lists.special;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class SpecialList extends ListActivity{
TextView toptext;
String[] items={"Atlanta", "Boston", "Chicago", "Dallas"};
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
items));
toptext=(TextView)findViewById(R.id.toptext);
}
public void onListItemClick(ListView parent, View v, int position,
long id) {
Intent intent = new Intent();
if (parent.getItemAtPosition(position)=="Atlanta")
{
//THIS IS WHERE I WISH TO INSERT "ZONE 1", "ZONE 2", "ZONE …Run Code Online (Sandbox Code Playgroud) 我有一个MultiAutoCompleteTextView,它允许您输入多个条目并显示自动填充建议.我提交数据时出现问题.我将任何输入的字符串添加到下拉列表中,但我尝试对数据进行排序失败.在提交时执行的代码:
final private Comparator<String> comp = new Comparator<String>() {
public int compare(String e1, String e2) {
return e1.toString().compareTo(e2.toString());
}
};
((ArrayAdapter<String>) autoCompleteView.getAdapter()).add(getString());
((ArrayAdapter<String>) autoCompleteView.getAdapter()).sort(comp);
Run Code Online (Sandbox Code Playgroud)
单击autoCompleteView时发生的代码:
view.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
adapter.getFilter().filter(null);
//adapter.sort(comp);
view.showDropDown();
}
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以发现我正在做的事情有什么问题吗?
编辑:在收集@Sam的更改后的更多信息
private ArrayList<String> array = new ArrayList<String>();
private ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,
array);
private void setUpAutoComplete(final MultiAutoCompleteTextView view)
{
array.add("test string"); // this is successfully added to the drop down list
Collections.sort(array, comp);
adapter.notifyDataSetChanged();
}
private void onSubmit()
{ …Run Code Online (Sandbox Code Playgroud) 我想在列表视图的每一行中获得不同的颜色
但目前只显示一种颜色
那我怎么能这样做呢
ArrayAdapter<String> adapter=new ArrayAdapter<String(this,R.layout.latesthappenings,R.id.LH_Titles,titles);
setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我想在每一行中使用不同的颜色
请告诉我该怎么办
谢谢
我有一个扩展ArrayAdapter的内部类,以便自定义ListView.我想将这个内部类分解为一个单独的文件,以便其他类可以使用它,但在getLayoutInflater()时遇到一些问题.
基本上,我的getView()方法不知道getLayoutInflater()是什么,即使我正在扩展ArrayAdapter.任何人都知道如何正常工作?
谢谢!
public class myDynAdap extends ArrayAdapter<String>
{
String [] list;
public myDynAdap (Context context, int textViewResourceId, String [] objects)
{
super (context, textViewResourceId, objects);
mCtx = context;
list = objects;
}
@Override
public View getView (int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null)
{
LayoutInflater inflater = getLayoutInflater (); // <--- "The method getLayoutInflater() is undefined for the type myDynAdap"
row = inflater.inflate (R.layout.main_listitem, parent, false);
}
TextView tv1 = (TextView) …Run Code Online (Sandbox Code Playgroud) 所以我有一个自定义,ArrayAdapter所以我可以使用可用的标题/副标题视图ListView.我有一个EditText接受字符串并过滤适配器.
过滤器工作的意义在于它正在过滤正确的对象(我可以通过点击它来判断它并使用正确的"额外"来启动意图.)
但是,即使过滤工作,适配器中的项目也不会更新以显示正确的信息...标题和副标题不正确.
让我们说我们有0到9的项目ListView,我过滤到3项搜索,并说让过滤的项目显示5,6,9 ... 3项,但它的前3项目的原- 搜索ListView(0-2).如果我单击项目2(第三项),则9的内容包含在新意图中.这对于搜索条件是正确的,但标题确实反映了正确的信息.
我不确定我需要告诉ListView刷新什么.我不认为它notifyDataSetChanged();
任何帮助表示赞赏.谢谢!
public class myListAdapter extends ArrayAdapter<Pizza>{
private ArrayList<Pizza> items;
private PizzaViewHolder myListHolder;
private class PizzaViewHolder{
TextView title;
TextView subtitle;
}
public myListAdapter(Context context, int textViewResourceId, ArrayList<Pizza> items) {
super(context, textViewResourceId, items);
this.items = items;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = …Run Code Online (Sandbox Code Playgroud) 我有两个简单的活动 - 活动1:来自Array Activity2的ListView:EditText,用于编辑Activity1中单击的行
当我在Activity2中编辑值并返回到Activity1时,ListView不会重新加载新值.
我想从Activity2返回或恢复Activity1或更新列表的东西时刷新ListView.
我的代码:
static ArrayAdapter<String> dataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Loading the values to list array
String[][] fulllist = loadArrays();
String[] list = new String[fulllist.length];
for(int i = 0; i<fulllist.length; i++) {
list[i] = fulllist[i][1];
}
// --------------------------------
dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
list);
setListAdapter(dataAdapter);
}
@Override
public void onResume() {
super.onResume();
// Loading the values to list array
String[][] fulllist = loadArrays();
String[] list = new String[fulllist.length];
for(int i = 0; …Run Code Online (Sandbox Code Playgroud) 所以我用谷歌搜索,并搜索SO以寻找我认为可能是一个荒谬的疏忽的答案,但是这里有.
我有一个ListView,我正在填充一个ArrayAdapter我正在我的应用程序中的其他地方使用的对象列表.我已经检查getCount过,在我调用之前和之后,适配器中都有项目.setAdapter().但是,我的应用程序中没有任何内容出现.
我的主要布局res/layout/playlistview:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playlist_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#80000000"
android:gravity="center"
android:orientation="horizontal" >
<ListView
android:id="@+id/playlistview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#206"
android:background="#602" >
</ListView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
(我设置了颜色,这样我就可以更容易地看到发生了什么)
在textview每个项目res/layout/singlelistitem:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/single_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:padding="5dp"
android:background="#206">
</TextView>
Run Code Online (Sandbox Code Playgroud)
和我用来填充它的代码:
private ListView playlistView;
private void buildPlaylistView() {
playlistView = (ListView)findViewById(R.id.playlistview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.singlelistitem, R.id.single_item, playlist.titlesAsArray());
playlistView.setAdapter(adapter);
playlistView.setVisibility(View.VISIBLE);
adapter.notifyDataSetChanged();
((ArrayAdapter<String>)playlistView.getAdapter()).notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
playlist.titlesAsArray()确实返回String[]并且有效.
我有两个.notifyDataSetChanged() …
我正在创建一个自定义数组适配器,我现在想要实现一个处理单击视图的函数.我有两个选择,但我想知道性能/工作速度是否存在差异?
选项1,在arrayAdapter中:
row.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
选项2,来自主要活动:
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
还是他们完全一样?
我的listView需要一个自定义适配器.它需要传递给ASyncTask,它将从RSS提要中获取一些数据,然后希望将该数据(当前标题和日期,两个字符串)设置为该行.
我提出的代码如下,但它没有对适配器做任何事情.
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity
{
private ListView listOne;
private ListView listTwo;
RssListViewAdapter adapterOne;
RssListViewAdapter adapterTwo;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.rss_layout);
//Connect all three columns to their ListViews
listOne = (ListView) findViewById(R.id.listOne);
listTwo = (ListView) findViewById(R.id.listTwo);
//Create both adapaters
//TODO: Make custom adapater
adapterOne = new RssListViewAdapter(this);
adapterTwo = new RssListViewAdapter(this);
//Class once for each column. Pass feed URL and Adapter.
new GetRssFeed("http://feeds.arstechnica.com/arstechnica/index", adapterOne, listOne).execute();
new …Run Code Online (Sandbox Code Playgroud) 我正在学习Android Studio中的原型,我遇到了一个障碍,我似乎无法找到任何答案.
我有一个Activity,它将自定义ArrayAdapter显示为ListView.我可以通过单击它们并输入生成的AlertDialog来编辑ListView中的项目.还有一个我可以按下的添加按钮,它会显示一个类似的AlertDialog,但是当我点击保存时,没有任何内容被添加到ListView中.如何将AlertDialog文本输入保存为新的ArrayAdapter项?
我发现的大多数例子都直接在Activity中实例化了ArrayAdapter,而不是像我做的那样通过Fragment实例化.
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) { //initialize the activity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //establish where the layout will come from
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); //creates a toolbar
setSupportActionBar(toolbar);
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
//creates the first fragment dynamically, so it can be replaced
Fragment firstFragment = new MainActivityFragment();
firstFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
}
//This creates the …Run Code Online (Sandbox Code Playgroud)