int globalPosition ;
..............
buttonAllData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new UploadBulkData(globalPosition).execute();
}
});
........
class UploadBulkData extends AsyncTask<String, String, String> {
private ProgressDialog pDialog;
int dataPosition;
public UploadBulkData(int position){
this.dataPosition = position;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(UploadActivity.this);
pDialog.setMessage("Uploading...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... args) {
.......
String url = "http://web/uploadBulk.php";
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("UserData", st));
String resultServer = getHttpPost(url,params); …
Run Code Online (Sandbox Code Playgroud) android android-listview android-asynctask getview android-viewholder
我正在使用AnimationDrawable进行下载进度吧我将动画放入getview,它运行正常.但是当我滚动列表时,动画已被停止.在AnimationDrawable中有任何方法来解决这个问题.喜欢Dialog中的setCancelable.
请帮帮我...谢谢
ImageView anim = (ImageView) rootview.findViewById(R.id.imageView2);
AnimationDrawable animation = (AnimationDrawable) anim.getDrawable();
animation.start();
Run Code Online (Sandbox Code Playgroud)
截图:
我知道getView()
可能会在onCreateView()
方法内部返回null ,但即使我将下面的代码放在里面onActivityCreated()
,onStart()
或者onViewCreated()
方法,它仍然会NullPointerException
在Android Studio中显示有关可能的警告(尽管我的程序运行没有任何问题).如何摆脱这种警告?
我正在使用碎片.
码:
datpurchased = (EditText) getView().findViewById(R.id.datepurchased);
//datpurchased defined as instance variable in the class
Run Code Online (Sandbox Code Playgroud)
警告:
方法调用'getView().findViewById(R.id.datepurchased)'可能会产生'java.lang.NullPointerException'
嗨,下面是我的baseadapter类,但它无法正常工作:
private static class MyBaseAdapter extends BaseAdapter {
private Context context;
private LayoutInflater inflater;
private MyBaseAdapter(Context context, FlipViewController controller) {
inflater = LayoutInflater.from(context);
this.context = context;
}
@Override
public int getCount() {
return Globals.list_album.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View layout = convertView;
if (convertView == null )
{
if (Globals.list_album.get(position).no_of_images == 1) {
layout = …
Run Code Online (Sandbox Code Playgroud) 我必须显示具有不同类型视图的列表。所以我必须定义一个带有适配器的 ListView,我必须在其中膨胀多个视图。我已经完成了给出的示例,但问题是我的列表不对称,就像在 4 个项目之后每次重复标题的示例一样。所以我面临着重用物品的问题getView()
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case TYPE_1:
convertView = mInflater.inflate(R.layout.item1, null);
.......
break;
case TYPE_2:
convertView = mInflater.inflate(R.layout.item2, null);
.......
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
............
............
}
Run Code Online (Sandbox Code Playgroud)
现在,如果 convertView 不为空,但之前使用的项目类型不同,则布局将不匹配。这段代码将如何处理这个问题?
getView()
和之间有什么区别getActivity()
?
我已经使用了这两种方法,但是不了解基本的区别,即使使用方法在android中也是如此:
ListView deliverItemList = (ListView) getView().findViewById(R.id.load_item_list);
ListView deliverItemList = (ListView) getActivity().findViewById(R.id.load_item_list);
Run Code Online (Sandbox Code Playgroud)
我假设getView()
可能会产生NullPointerException
,与我分享你的知识,推荐哪种方法?
我正在尝试创建一个ListView,其中第一个项目以不同的布局显示,而其他项目则采用通用布局.两种布局都具有相同的元素,这些元素成对具有相同的名称.当我喜欢这样的时候:
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
if(position == 0){
convertView = inflater.inflate(R.layout.article_list_top_item, parent, false);
Log.d("ALA", "pos = " + position + ", inflated top");
}
else {
convertView = inflater.inflate(R.layout.article_list_item, parent, false);
Log.d("ALA", "pos = " + position + ", inflated normal");
}
}
// setText, setBitmap etc here
return convertView;
}
Run Code Online (Sandbox Code Playgroud)
它不起作用.从我可以说的日志中,inflater.inflate
触发了6次,inflated top
1次和inflated normal
5次.
显示的是,文章[0]在布局article_list_top_item
和文章[1]〜文章[5]中article_list_item
.
直到这里它还可以,但重复的模式,这意味着文章[6],文章[12],[18],...都在布局中article_list_top_item
,这不是我想要的.
我该怎么做才能使第一篇文章出现在 …
我有300首mp3歌曲的列表视图,假设歌曲52正在播放.所以我想下次当用户打开歌曲列表时,他前面的列表行必须从第52行开始(上下都是行).我试过用
public View getViewByPosition(int pos, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition ) {
return listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}
Run Code Online (Sandbox Code Playgroud)
并且
adapter.getItem(52);
Run Code Online (Sandbox Code Playgroud)
但两者都是毫无意义的方法,并没有带我去第52行.(这些方法是我使用的,但可能不是解决方案)而且我没有得到谷歌搜索的解决方案.如果你们能解决这个问题,请告诉我!
非常感谢你的聆听!
我为listview创建了一个customadapter,但由于某种原因,getView方法的参数"position"始终为0,这使得该方法毫无用处.
这是我的customAdapter的代码,扩展了BaseAdapter:
public class CreateProgramAdapter extends BaseAdapter {
private LayoutInflater inflater;
private ArrayList<TrainingPass> trainingPasses;
private List<TrainingPass> items;
private Context context;
public CreateProgramAdapter(Context context, List<TrainingPass> items) {
this.context = context;
this.items = items;
this.inflater = LayoutInflater.from(this.context);
}
@Override
public int getCount() {
return items.size();
}
@Override
public TrainingPass getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
TrainingPassHolder holder;
if(convertView == null) { …
Run Code Online (Sandbox Code Playgroud) 我希望 click 方法只被调用一次,我该怎么做才能得到这个结果?这是我的代码:
public override View GetView(int position, View convertView, ViewGroup parent)
{
View result = convertView;
if (result == null)
{
result = LayoutInflater.From(_Context).Inflate(Resource.Layout.DiagnoseTemplateLayout, null, false);
}
TextView textView = result.FindViewById<TextView>(Resource.Id.DiagnoseTemplateTextView);
textView.Text = _Diagnoses[position].Description;
Button button = result.FindViewById<Button>(Resource.Id.DeleteDiagnoseTemplateButton);
button.Tag = _Diagnoses[position].Key;
button.Click += delegate
{
if (_Diagnoses[position] != null)
{
AlertDialog.Builder builder = new AlertDialog.Builder(_Context);
builder.SetTitle("Varning");
builder.SetMessage("Delating selected item?");
builder.SetPositiveButton("YES", delegate
{
SuperBillAddActivity.SuperBill.Diagnoses.Remove(_Diagnoses[position]);
SuperBillAddActivity.RefreshLists();
});
builder.SetNegativeButton("NO", delegate { });
builder.Show();
}
};
return result;
}
Run Code Online (Sandbox Code Playgroud)
这个方法被调用 3 次 button.Click …
我是关于android studio的新手。我尝试使用ArrayAdapter。但是,当我完成代码后,它说“'getView'不会覆盖任何内容”。我在“返回teksatirview代码”中遇到此错误。这是我的arrayadapter类:
package com.example.burcrehberi
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import kotlinx.android.synthetic.main.teksatir.view.*
class BurcArrayAdapter(
var gelencontext: Context,
resource: Int,
textViewResourceId: Int,
var burcAdlari: Array<String>,
var burcTarih: Array<String>,
var burcResimleri: Array<Int>
) : ArrayAdapter<String>(gelencontext, resource, textViewResourceId, burcAdlari) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? {
var teksatirview = convertView
if (teksatirview == null) {
var inflater = LayoutInflater.from(gelencontext)
teksatirview = inflater.inflate(R.layout.teksatir, parent, false)
}
var burcImageView = teksatirview?.imgburcsembol
var burcisim = teksatirview?.tvburcadi
var burctarih …
Run Code Online (Sandbox Code Playgroud) 我有一个自定义列表视图,其中每个项目有两个按钮(ADD和SUB)和一个维护计数的textView.
最初计数为零,当我单击"添加"按钮时,它会添加1并在我单击"SUB"按钮时减去1.
因为对于每一行,计数应该单独维护,我没有找到任何技术,我可以通过它来做同样的事情.
我尝试在我的适配器中使用View.OnClickListener但无法检索位置.因此,每当我点击"添加"按钮时,它会为每个项目添加1.
请帮我一些有用的技巧.