@Override public View getView(int position, View convertView, ViewGroup parent) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext); mContext.setTheme(R.style.DayTheme); View v = View.inflate(mContext, R.layout.note_layout, null); TextView tv_content = v.findViewById(R.id.tv_content); TextView tv_time = v.findViewById(R.id.tv_time); //Set text for TextView String allText = noteList.get(position).getContent(); /*if(sharedPreferences.getBoolean("noteTitle", true)) tv_content.setText(allText.split("\n")[0]);*/ tv_content.setText(allText); tv_time.setText(noteList.get(position).getTime()); //Save note id to long v.setTag(noteList.get(position).getId()); return v; } @Override public Filter getFilter() { if (mFilter == null){ mFilter = new MyFilter(); } return mFilter; }这里运用了哪些技术
时间: 2024-04-05 21:34:24 浏览: 17
这段代码运用了以下技术:
1. SharedPreferences:用于访问和修改应用程序的共享偏好设置。
2. View:Android中的基本UI元素,用于构建用户界面。
3. TextView:Android中的UI元素,用于显示文本。
4. Filter:Android中的类,用于过滤器搜索结果。在这段代码中,它用于搜索笔记列表并返回匹配的笔记。
5. Inflater:Android中的类,用于将XML布局文件转换为Java对象。
6. Theme:Android中的概念,用于更改应用程序的外观和风格。在这段代码中,它用于在应用程序的主题中设置白天/黑夜模式。
相关问题
public abstract class BaseActivity extends AppCompatActivity { static final String TAG = "tag"; public final String ACTION = "NIGHT_SWITCH"; protected BroadcastReceiver receiver; protected IntentFilter filter; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setNightMode(); filter = new IntentFilter(); filter.addAction(ACTION); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "onReceive: needRefresh"); needRefresh(); } }; registerReceiver(receiver, filter); } public boolean isNightMode(){ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); return sharedPreferences.getBoolean("nightMode", false); } public void setNightMode(){ if(isNightMode()) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); Log.d(TAG, "setNightMode: " + sharedPreferences.getBoolean("nightMode", false)); this.setTheme(R.style.NightTheme); } else setTheme(R.style.DayTheme); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); } protected abstract void needRefresh(); }把activity改成fragment
好的,将这段代码转换成 Fragment 代码大致的步骤如下:
1. 创建一个新的 BaseFragment 类,继承自 Fragment。
2. 将原来在 BaseActivity 类中的代码复制到新的 BaseFragment 类中。
3. 在 BaseFragment 类中,将 onCreate() 方法改为 onActivityCreated() 方法,并将方法参数改为 savedInstanceState 和 View 类型的布局视图对象。
4. 在 onActivityCreated() 方法中,调用 setNightMode() 方法,用于设置当前主题。
5. 在 BaseFragment 类中,将 isNightMode() 方法中的 getBaseContext() 方法替换为 getContext() 方法。
6. 将原来在 BaseActivity 类中的 needRefresh() 抽象方法添加到 BaseFragment 类中,并实现该方法。
7. 在原本的 Activity 中找到容器布局,改为使用 FragmentTransaction 将新的 BaseFragment 实例添加到容器布局中。
下面是将 BaseActivity 转换为 BaseFragment 的代码示例:
```
public abstract class BaseFragment extends Fragment {
static final String TAG = "tag";
public final String ACTION = "NIGHT_SWITCH";
protected BroadcastReceiver receiver;
protected IntentFilter filter;
@Override
public void onActivityCreated(Bundle savedInstanceState, View view) {
super.onActivityCreated(savedInstanceState, view);
setNightMode();
filter = new IntentFilter();
filter.addAction(ACTION);
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive: needRefresh");
needRefresh();
}
};
getContext().registerReceiver(receiver, filter);
}
public boolean isNightMode(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
return sharedPreferences.getBoolean("nightMode", false);
}
public void setNightMode(){
if(isNightMode()) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
Log.d(TAG, "setNightMode: " + sharedPreferences.getBoolean("nightMode", false));
getActivity().setTheme(R.style.NightTheme);
}
else getActivity().setTheme(R.style.DayTheme);
}
@Override
public void onDestroy() {
super.onDestroy();
getContext().unregisterReceiver(receiver);
}
protected abstract void needRefresh();
}
```
希望这个例子对您有所帮助。
public View getView(int position, View convertView, final ViewGroup parent) {
这是一个Android应用中的Java代码,它定义了一个 `getView` 方法,用于在ListView或GridView等列表视图中获取每个条目的视图。该方法接收三个参数:
- `position`:表示当前获取的视图在列表中的位置。
- `convertView`:表示当前可重用的视图,如果 `convertView` 是 `null`,则需要创建一个新的视图。
- `parent`:表示当前视图的父视图,即列表视图。
方法体中的代码会根据 `convertView` 是否为 `null` 来判断是否需要创建新的视图。如果需要创建新的视图,就会使用 `LayoutInflater` 类的 `inflate` 方法来从布局文件中创建视图。接着会在该视图中查找需要更新的UI控件,并更新它们的显示内容。
例如,下面是一个简单的 `getView` 方法的示例代码:
```java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
}
TextView textView = convertView.findViewById(R.id.text_view);
textView.setText(data.get(position));
return convertView;
}
```
该方法用于在ListView中显示文本数据。如果 `convertView` 是 `null`,则从名为 `list_item` 的布局文件中创建一个新的视图。接着获取该视图中的TextView控件,并将它的文本设置为 `data` 列表中指定位置的文本,最后将更新后的视图返回以供列表显示。