我在src root中创建了一个testing
包,最后是SectionListActivityExtended
是一个简单的别名,但在不同的包中:
package testing;
import pl.polidea.sectionedlist.SectionListActivity;
public class SectionListActivityExtended extends SectionListActivity{
}
修改了AndroidManifest.xml部分:
<activity
android:name="testing.SectionListActivityExtended"
android:label="@string/app_name"
android:theme="@style/SectionListViewTheme" >
并修改了SectionListActivity:
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arrayAdapter = new StandardArrayAdapter(this, R.id.example_text_view, exampleArray);
sectionAdapter = new SectionListAdapter(getLayoutInflater(), arrayAdapter);
String className = SectionListActivity.class.getPackage().getName();//className: pl.polidea.sectionedlist
System.out.println("className: "+className);//className: pl.polidea.sectionedlist
listView = (SectionListView) findViewById(getResources().getIdentifier("section_list_view", "id", className));
listView.setAdapter(sectionAdapter);
}
经过测试并正在使用,它用类名标签写出包名,现在不重要了。
我已经创建了我的工作应用程序(在NDA下有很多样式和定义)我已经将包含所需文件的源代码复制到我的项目中,希望我能开始工作。修改了SectionListActivity
并从扩展类调用,类似于上面:不同的根包。
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arrayAdapter = new StandardArrayAdapter(this, R.id.example_text_view, exampleArray);
sectionAdapter = new SectionListAdapter(getLayoutInflater(), arrayAdapter);
// FrameLayout frameLayout = (FrameLayout) findViewById(R.id.listView);
// if (frameLayout == null) {
// Log.e("tag", "got frameLayout");
// } else {
//
// Log.e("tag", "frameLayout is NULL");
// }
String packageName = SectionListActivity.class.getPackage().getName();//pl.polidea.sectionedlist
System.out.println("packageName: " + packageName);
listView = (SectionListView) findViewById(getResources().getIdentifier("section_list_view", "id", packageName));
if (listView != null) {
listView.setAdapter(sectionAdapter);
} else {
Log.e(packageName, "Can't load section_list_view ");
}
}
frameLayout
和listView
都为空。
来自其他帖子的主要原因是因为他们没有将attrs传递给super,但是这部分代码没有被触及:
public SectionListView(final Context context, final AttributeSet attrs) {
super(context, attrs);
commonInitialisation();
}
也许在造型方面,它并没有合并,但不知道如何追踪,或者我可能会错过一些东西而且还不知道。
有什么想法吗?
答案 0 :(得分:0)
这样做
listView = (SectionListView) findViewById(getResources().getIdentifier("section_list_view", "id", getPackageName()));