我可以更方便地OnClickListener为每一行注册一个唯一的ListView,但我想确保这是一个可以接受的做法.我目前的设计是一种相当复杂的方式来分离OnClickListener每行类型的关注点.
这样做的原因是我有多个行类ListView.每个班级都有完全不同的责任和行为.例如,考虑ListView可以包含子类别和书名的a.如果单击书名,则应开始显示封面图像的新活动.如果单击子类别,则会显示新的书籍和类别列表.
我希望这一行能够保持对其自身身份和责任的了解,而不是泄漏有关每一行的知识,以便由实施者维护onItemClickListener.
我还想知道这样做的性能影响与实现我自己的逻辑以确定如何处理点击有关.
是否有缺点,而不是实现onClickListener每一ListView ArrayAdapter行onItemClickListener?我正在寻找具体的数据和具体的缺点,而不是模糊的建议.
我是否应该期待内存使用,初始化时间或稳态速度(如滚动列表)受到显着影响?
android listview android-arrayadapter android-listview onclicklistener
我有一个带有2个标签的应用.每个标签都有相应的片段.在其中一个选项卡上,我需要放置一个列表视图,以便从存储的数组接收数据并将它们作为列表放置.
这是我的代码,直到现在:
public class Frag3 extends Fragment{
ListView lv1;
ProgressDialog ShowProgress;
public ArrayList<Post> PostList = new ArrayList<Post>();
TextView tv1;
Button button1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
View view = inflater.inflate(R.layout.tab3, container, false);
//View tv = view.findViewById(R.id.textView1);
View listView = view.findViewById(R.id.listView1);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter<String> files = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,
values);
lv1.setAdapter(files); …Run Code Online (Sandbox Code Playgroud) android android-arrayadapter android-listview android-fragments
我试图从ListView中的EditTexts中获取值,但它不起作用.在afterTextChanged方法中设置为'lista'数组的值显然已丢失.我是android编程的新手,有人可以帮帮我吗?(抱歉英文不好)下面是适配器中getView的代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
final int posicao = position;
if (convertView == null) {
LayoutInflater inflater = contexto.getLayoutInflater();
convertView = inflater.inflate(R.layout.produtos, null);
holder = new ViewHolder();
holder.texto = (TextView) convertView.findViewById(R.id.txtDescricao);
holder.checkbox = (CheckBox) convertView.findViewById(R.id.chkProduto);
holder.edit = (EditText) convertView.findViewById(R.id.txtValor);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.texto.setText(getItem(position).getTexto());
holder.edit.setText("0");
holder.edit.setTag(new LinhaItemTag(getItem(position), position));
//here a get an exception just setting the focus on edit
holder.edit.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean …Run Code Online (Sandbox Code Playgroud) 由于PreferenceFragment在支持库中没有提供,因此我创建了一个ListFragment向用户显示设置列表,因为我没有很多要显示的设置.我还创建了一个自定义ArrayAdapter来自定义列表项.当用户检查其中一个CheckBoxs 时我需要处理,以便我可以保存天气或者不检查它.因此,如果检查它,它将保持检查,直到用户取消选中它.如果列表中只有一个设置,但现在有2个,我可能需要添加更多设置,这会容易得多.所以我需要能够确定检查了哪一个.我可以处理检查并取消选中,我无法找到确定检查哪一个的方法.
代码
这是我的清单项目:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="horizontal">
<TextView android:id="@+id/pref_edit_text" android:layout_width="0dp" android:layout_height="30dp"
android:layout_weight="5"/>
<CheckBox android:id="@+id/pref_check_box" android:layout_width="0dp" android:layout_height="wrap_content"
android:layout_weight="1" android:onClick="onCheckBoxClick"/>
</LinearLayout>
<TextView android:id="@+id/pref_edit_text2" android:layout_width="match_parent"
android:layout_height="50dp"/>
Run Code Online (Sandbox Code Playgroud)
这是getView()我的适配器:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//mIntCheckBoxPosition = position;
Typeface tf = Typeface.createFromAsset(mMainActivity.getAssets(), "fonts/ArchitectsDaughter.ttf");
LayoutInflater inflater = mMainActivity.getLayoutInflater();
View view = inflater.inflate(mIntLayoutId, parent, false);
TextView text = (TextView) view.findViewById(R.id.pref_edit_text);
text.setText(mStringArrayTitle[position]);
text.setTypeface(tf, Typeface.BOLD);
text = (TextView) …Run Code Online (Sandbox Code Playgroud) android android-preferences android-arrayadapter android-listfragment android-support-library
为什么listview.getChildCount()和adapter.getCount()返回不同的值?我有一个onScroll方法,如果我调用上面的方法,每个方法返回不同的值.有谁知道为什么?
android android-arrayadapter android-layout android-listview android-adapter
基本上我有一个类成分的对象列表,如下所示:
class Ingredient {
public int id;
public String name;
public Ingredient(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
所以列表中的每个对象都有一个名称.
现在使用ArrayAdapter我需要一个填充名称的字符串列表.有没有办法将ArrayAdapter与我的成分列表一起使用?这就是它现在的样子
List<Ingredient> ingredientsList= new ArrayList<Ingredient>();
ingredientsList.add(new Ingredient("foo"));
ingredientsList.add(new Ingredient("bar"));
Run Code Online (Sandbox Code Playgroud) 我从DB获取标题列表,并使用这些标题添加到布局ArrayList.此布局是使用创建的adapters.当我点击此布局中显示的标题时,我想打开另一个布局.如何解决这个问题?有什么建议请....
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.app.ListActivity;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class FullDetails extends ListActivity {
ArrayList<String> listItems=new ArrayList<String>();
ArrayAdapter<String> adapter;
private ListView lv;
int clickCounter=0;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_full_details);
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItems);
setListAdapter(adapter);
fullItems(null);
}
JSONArray all=new JSONArray();
String size;
public void fullItems(View …Run Code Online (Sandbox Code Playgroud) android android-arrayadapter android-layout android-listview
我ListFragment使用默认设置创建了一个自定义布局ArrayAdapter。我的问题是,当列表不为空时,每行上都会显示空消息(当列表为空时,该消息仅按预期显示一次)。
headline_list.xml(即我的自定义布局文件)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:id="@id/android:list" />
<TextView android:id="@+id/my_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@id/android:empty"
android:text="There are no data"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
HeadlineFragment.java
public class HeadlineFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.headline_list, container, false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<String> headlines = ...; // populate headlines list
setListAdapter(new ArrayAdapter<String>(getActivity(),
R.layout.headline_list, R.id.my_text, headlines));
}
}
Run Code Online (Sandbox Code Playgroud)

我是Android的新手.试图将以前在我的主要活动中控制的列表视图添加到片段中.
我的MainActivity延伸FragmentActivity.我得到了一个设置适配器的空指针,以及包含该populateList()方法的行.
不确定解决方案是否与getActivity()和/或setListAdapter()我一直在阅读的选项有关.我知道它是从保存中找到的项目,但我不知道如何纠正这个问题.任何见解将不胜感激.
附加信息:我正在使用android.support.v4.app.FragmentActivity.FragmentS在...内public class TabbedActivity extends Fragment {
public static class FragmentS extends Fragment {
public FragmentS() {
}
List<LiftSave> LiftSaves = new ArrayList<LiftSave>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.listview_s,
container, false);
DatabaseHandler dbHandler;
dbHandler = new DatabaseHandler (getActivity().getApplicationContext());
if (dbHandler.getLiftSavesCount() != 0)
LiftSaves.addAll(dbHandler.getAllLiftSaves());
populateList();
return rootView;
}
private void populateList() {
ListView saveListView = (ListView)getActivity().findViewById(R.id.saveListView); …Run Code Online (Sandbox Code Playgroud) android listview android-arrayadapter android-listview android-fragments
在列表适配器getview方法中使用sharedpreferences的最佳方法是什么?我必须使用来自sharedpreferences的一些值,但不知道如何获取它。我试过了:
pref = getApplicationContext().getSharedPreferences("pref", MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
它在活动中起作用,并且:
SharedPreferences pref = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
可以分段工作,但都不能在listadapter中工作。
java android android-arrayadapter sharedpreferences android-studio