我正在为Android做一个应用程序,我需要的是它显示了SD卡中所有文件和目录的列表,它必须能够在不同的目录中移动.我在anddev找到了一个很好的教程.我修改了一些东西,所以应用程序在SD卡中移动而不是在Android根目录中,但其余部分基本相同.
这是我的活动的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</ListView>
Run Code Online (Sandbox Code Playgroud)
这是活动的代码:
import hackreatorz.cifrador.R;
import java.io.File;
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ArchivosSD extends ListActivity {
private ArrayList<String> directoryEntries = new ArrayList<String>();
private File currentDirectory = new File("/sdcard/");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
browseToSD();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
private void browseToSD() {
browseTo(new …Run Code Online (Sandbox Code Playgroud) 我在listVivew的标题中添加了一个视图,
View TopSearch = (View) View.inflate(this, R.layout.search, null);
lv.addHeaderView(TopSearch, null, false);
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到我尝试执行(数据更改时)
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
总是崩溃我的应用程序给我以下错误:
> java.lang.ClassCastException:android.widget.HeaderViewListAdapter
如果我删除标题视图,则没有错误.有什么建议?谢谢.
什么是容器/适配器?
有人请用外行的语言解释.
我试图在互联网上查找,但定义和解释太技术化,难以理解.
我有C++的基本知识及其子主题,如(class/templates/STL).
编辑1:
有谁能给我一个容器/适配器应用的实际例子?
只是为了更好地理解:-)
谢谢.
我想在可扩展列表中放置一个带有图像的gridview ...我已经做到了,但gridview没有显示所有项目......
如何让我的可扩展列表子项适应gridview大小?
列表适配器
public class CustomListAdapter extends BaseExpandableListAdapter
{
String[] catg = { "Administração, Escritorio e Industria", "Cultura e Entretenimento", "Educação e Crianças", "Eventos e Estado do tempo", "Amigos, Familia e Habitações", "Multimédia", "Diversos", "Números e Letras", "Restaurantes e Hoteis", "Desporto, Saude e Beleza", "Lojas", "Turismo e Natureza", "Transportes" };
Context myctx;
@Override
public Object getChild(int groupPosition, int childPosition)
{
// TODO Auto-generated method stub
return null;
}
@Override
public long getChildId(int groupPosition, int childPosition)
{
return childPosition;
} …Run Code Online (Sandbox Code Playgroud) 是否可以onActivityResume在adapter&呼叫中使用方法startActivityForResult?
我的微调器上的文字是白色的,我不知道为什么.

这是我的xml,没什么特别的
<Spinner
android:id="@+id/spinner_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
Run Code Online (Sandbox Code Playgroud)
我的代码
dateSpinner = (Spinner) findViewById(R.id.spinner_date);
selectedDate = calendar.getTime();
List<String> list = new ArrayList<String>();
list.add(formatter.format(selectedDate));
dateAdapter = new ArrayAdapter<String>(mContext,
android.R.layout.simple_spinner_item, list);
dateSpinner.setAdapter(dateAdapter);
Run Code Online (Sandbox Code Playgroud)
我的文字以白色显示的原因是什么?
编辑:我找到了原因,我替换了我的onCreate中设置的mContext参数.
mContext = getApplicationContext();
Run Code Online (Sandbox Code Playgroud)
现在我用d
ateAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
Run Code Online (Sandbox Code Playgroud)
它的工作原理.
我在列表中设置自定义标题时遇到了一些麻烦.
我正在使用自定义适配器创建ListFragment.我的列表工作正常,但我正在试图找出片段的生命周期中附加标题的位置.
我知道在设置适配器之前必须添加标头.
我尝试在onActivityCreated中添加我的标题,但是每次我的Fragment从backstack返回时都会调用它,并且因为我还在onActivityCreated中设置了我的适配器,所以它失败了.
我尝试在onCreate中添加它,但视图层次结构在生命周期的那个阶段不可用.
我尝试在onCreateView中添加它,但我无法将从inflate返回的视图转换为ListView.所以我无法将标题添加到香草视图中.
有什么想法吗?
在我的应用程序中,如果您单击一个按钮,那么我想删除所有列表视图项目.在这里,我使用基本适配器将项目添加到列表视图.
如何动态删除listview项目.
我有一些关于适配器模式的问题.我知道类适配器继承自adaptee,而对象适配器将adaptee作为对象而不是继承自它.
您何时在对象适配器上使用类适配器,反之亦然?另外,使用类适配器和对象适配器的权衡取舍有哪些权衡?
我有ListView自定义Adapter,View以ListView这种方式供应:
public View getView(int position, View convertView, ViewGroup parent)
{
RelativeLayout.LayoutParams lineParams;
RelativeLayout line=new RelativeLayout(context);
TextView tv=new TextView(context);
tv.setText("Text in postion="+i);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
line.addView(tv, lineParams);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
//checkbox
CheckBox checkBox=new CheckBox(context);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
line.addView(checkBox, lineParams);
return line;
}
Run Code Online (Sandbox Code Playgroud)
在ListView里面的某个地方setOnItemClickListener(),它应该拦截项目点击事件.我的问题是,每当我尝试向项目添加复选框时 - 我都没有得到任何回复ListView.如果我跳过CheckBox或其他任何Button工作.
我真的遇到了这个问题,我尝试了各种布局,对齐,包装等等 - 没用.看起来像CheckBox干扰ListView项目点击事件.
任何想法如何克服?